스트림 입출력 변수,상수,형변환 열거형, 구조체, 공용체 함수 참조자 (reference) 동적할당,해제 과제

Slides:



Advertisements
Similar presentations
1.1 구조체란 1.2 중첩 구조체 1.3 구조체와 배열 1.4 구조체와 포인터 1.5 구조체와 함수 1.6 공용체와 열거형.
Advertisements

1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
제2장 C 언어의 확장 C++(1).
Part 03 상수, 변수, 자료형 ©우균, 창병모 © 우균, 창병모.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express Slide 1 (of 27)
제 9 장 포인터.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
제 9 장 구조체와 공용체.
컴퓨터 프로그래밍 기초 [Final] 기말고사
11장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
자료 구조: Chapter 3 (2)구조체, 포인터
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
개정판 누구나 즐기는 C언어 콘서트 제9장 포인터 출처: pixabay.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
제 3장. C보다 나은 C++ II.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
23장. 구조체와 사용자 정의 자료형 2.
14장. 포인터와 함수에 대한 이해.
11장. 1차원 배열.
C#.
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express Slide 1 (of 22)
C 3장. 변수와 데이터형 #include <stdio.h> int main(void) { int num;
19. 함수 포인터와 void 포인터.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
에어 조건문.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
5장 선택제어문 if 선택문 switch-case 선택문 다양한 프로그램 작성 조건 연산자.
Chapter 08. 함수.
Fucntion 요약.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
함수(Function) ◈ 함수의 개념 및 사용 이유 ◈ 함수 정의, 호출 및 선언 ◈ 지역변수와 전역변수 ◈ return 문
제 6 장 함수(functions).
에어 PHP 입문.
구조체 (Structure).
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
구조체(struct)와 공용체(union)
Numerical Analysis Programming using NRs
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 23. 구조체와 사용자 정의 자료형2.
Chapter 11 구조체.
Static과 const 선언 조 병 규 한 국 교 통 대 학 교 SQ Lab..
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
제 4 장 Record.
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 05. 복사 생성자.
1. 지역변수와 전역변수 2. auto, register 3. static,extern 4. 도움말 사용법
어서와 C언어는 처음이지 제21장.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
13. 포인터와 배열! 함께 이해하기.
Pointers summary.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

스트림 입출력 변수,상수,형변환 열거형, 구조체, 공용체 함수 참조자 (reference) 동적할당,해제 과제 제2장 C 언어의 확장 C++ 스트림 입출력 변수,상수,형변환 열거형, 구조체, 공용체 함수 참조자 (reference) 동적할당,해제 과제 순천향대학교 정보기술공학부 이 상 정 1

C 언어의 확장 C++ 언어 객체지향 프로그래밍을 제외한 기존 C 언어의 확장된 언어 소개 스트림 입출력 블록 내 변수 선언, 변수 범위 지정 연산자, 형변환 열거형,구조체,공용체 선언 시 키워드 생략 태그명 생략 공용체 함수의 중복정의 함수 선언 시 인수의 디폴트 값 선언 확장함수(inline function) 참조자(reference) 동적할당,해제 연산자 new, delete 순천향대학교 정보기술공학부 이 상 정 2

스트림 입출력 순천향대학교 정보기술공학부 이 상 정 3

입출력 연산자 C++ 언어에서는 스트림 입출력 연산자를 사용하여 표준 입출력 스트림(stream)이란 물리적인 입출력 장치를 입출력이 순서대로 이루어지는 가상의 통로로 정의 cin, cout, cerr로 정의된 예약어와 <<, >> 스트림 연산자와 함께 사용 표준입력 #include <iostream.h> cin >> 변수 [ >> 변수 …… ]; 표준출력 #include <iostream.h> cout << 식 [ << 식 ……]; 표준에러출력 #include <iostrem.h> cerr << 식 [ << 식 ……]; 순천향대학교 정보기술공학부 이 상 정 4

예제 2.1 스트림 입출력 예 1 // Ex2_1.cpp #include <iostream.h> main() { int x,y; float z; // 두 정수값 입력 cout << "두 정수 입력 : "; cin >> x; cin >> y; z = (float)x/y; // 결과 출력 cout << "z = "; cout << z; cout << '\n'; } 두 정수 입력 : 10 3 z = 3.333333 순천향대학교 정보기술공학부 이 상 정 5

예제 2.2 스트림 입출력 예 2 // Ex2_2.cpp #include <iostream.h> main() { int x,y; cout << "두 정수 입력 : "; cin >> x >> y; cout << "z = " << (float)x/y << '\n';} 두 정수 입력 : 10 3 z = 3.333333 순천향대학교 정보기술공학부 이 상 정 6

변수,상수,형변환 순천향대학교 정보기술공학부 이 상 정 7

블록 내 변수 선언 C 언어에서는 함수나 블록의 시작에서 미리 사용할 변수를 선언해야 했으나 C++ 언어에서는 변수가 사용되는 블록 내의 문장 앞에서 바로 선언하여 사용 가능 // Ex2_3.cpp #include <iostream.h> main() { int sum = 0; for (int i = 1; i <= 10; i++) // 블럭 내 변수 선언 sum += i; cout << "sum = " << sum << '\n'; } sum = 55 변수 i를 처음 사용하는 위치인 for 문 내에서 선언이 가능하다. 순천향대학교 정보기술공학부 이 상 정 8

변수의 범위 지정 연산자 C 언어에서는 자동변수(지역변수)와 외부변수(전역변수)가 같은 이름으로 선언되어 사용되었을 때에는 자동변수의 값이 참조 C++ 언어에서는 이와 같은 경우 변수 앞에 :: 연산자를 해당변수 앞에 기술하면 외부변수를 참조하는 것이 가능 순천향대학교 정보기술공학부 이 상 정 9

예제 2.4 범위 지정 연산자 사용 예 // Ex2_4.cpp #include <iostream.h> int a = 88; main() { int a = 30; int a = 10; cout << "1-1 a = " << a << "\n"; // a = 10 참조 cout << "1-2 ::a = " << ::a << "\n"; // a = 88 참조 int a = 20; cout << "2-1 a = " << a << "\n"; // a = 20 참조 cout << "2-2 ::a = " << ::a << "\n"; // a = 88 참조 } cout << "3-1 a = " << a << "\n"; // a = 30 참조 cout << "3-2 ::a = " << ::a << "\n"; // a = 88 참조 1-1 a = 10 1-2 ::a = 88 2-1 a = 20 2-2 ::a = 88 3-1 a = 30 3-2 ::a = 88 :: 연산자는 블럭의 위치 에 관계없이 외부변수를 참조한다. 순천향대학교 정보기술공학부 이 상 정 10

명시적 형변환 C 형변환 C++ 형변환 (변환형)식 (float)x; 변환형(식) float(x) // Ex2_5.cpp #include <iostream.h> main() { float a,b; a = 12.345; b = int(a); // 명시적인 형변환 cout << "a = " << a << '\n'; cout << "b = " << b << '\n'; } a = 12.345 b = 12 순천향대학교 정보기술공학부 이 상 정 11

열거형,구조체,공용체 순천향대학교 정보기술공학부 이 상 정 12

키워드 생략 enum chrom { black, blue, red, yellow, white }; struct man { char name[20]; char sex; int age; } union utag { char c; short s; long l; }; C 변수선언 enum chrom color; struct man teacher; union utag val; C++ 변수선언 chrom color; man teacher; utag val; 순천향대학교 정보기술공학부 이 상 정 13

예제 2.6 열거형,구조체 키워드 생략 예 // Ex2_6.cpp #include <iostream.h> enum sex { MALE, FEMALE }; // 열거형 상수 선언, MALE = 0, FEMALE = 1 struct man { // 구조체 선언 char name[20]; sex s; // 열거형 변수 선언 int age; }; main() { man teacher, student = { "Lee", MALE, 15}; // 구조체 변수 선언 teacher = student; // 구조체 복사 teacher.age = 35; cout << teacher.name << '\n' << teacher.age << '\n'; if (teacher.s == MALE) cout << "male"; else cout << "female"; cout << '\n'; } Lee 35 male 순천향대학교 정보기술공학부 이 상 정 14

예제 2.7 태그명이 생략된 공용체 사용 예 (1) // Ex2_7.cpp #include <iostream.h> enum sex { MALE, FEMALE }; struct man { char name[20]; sex s; int age; union { // 태그명이 생략된 공용체 선언 long salary; float fee; }; main() { man teacher, student = { "Lee", MALE, 15}; teacher = student; // 구조체 복사 순천향대학교 정보기술공학부 이 상 정 15

예제 2.7 태그명이 생략된 공용체 사용 예 (2) teacher.age = 35; teacher.salary = 125; cout << "teacher " << teacher.name << ' '; cout << teacher.age << ' ' << teacher.salary; if (teacher.s == MALE) cout << " male\n"; else cout << " female\n"; student.fee = 93.45; cout << "student " << student.name << ' '; cout << student.age << ' ' << student.fee; if (student.s == MALE) } teacher Lee 35 125 male student Lee 15 93.449997 male 순천향대학교 정보기술공학부 이 상 정 16

함수 순천향대학교 정보기술공학부 이 상 정 17

함수의 중복정의 함수의 중복 정의 (function overloading) 같은 이름을 갖는 각 함수는 인수의 형과 갯수, 함수의 반환형에 의해 구분  함수 뿐만 아니라 연산자의 중복 정의도 가능한데 이에 관한 자세한 소개는 5장에서 소개 순천향대학교 정보기술공학부 이 상 정 18

예제 2.8 함수의 중복 정의 예 1 // Ex2_8.cpp 절대값 함수의 중복 정의 #include <iostream.h> int abs(int n); // 정수의 절대값 함수 double abs(double n); // double 형 실수의 절대값 함수 main() { cout << "-123 절대값 : " << abs(-123) << '\n'; cout << "-12.345 절대값 : " << abs(-12.345) << '\n'; } // 정수형 인수의 abs() 함수 int abs(int n) return n < 0 ? -n : n; // double 정수형 인수의 abs() 함수 double abs(double n) { return n < 0 ? -n : n; } -123    절대값 : 123 -12.345 절대값 : 12.345 절대값을 구하는 2개의 함수가 모두 같은 이름의 abs()로 사용 되었으나 각 함수는 서로 다른 인수의 형에 따라 구분된다. 순천향대학교 정보기술공학부 이 상 정 19

예제 2.9 함수의 중복 정의 예 2 // Ex2_9.cpp #include <iostream.h> void date(char *date); // 문자열형의 날짜출력 함수 void date(int year,int month,int date); // 정수형의 날짜출력 함수 main() { date("1994.10.5"); date(1994,10,5); } // 문자열형 인수의 date() 함수 void date(char *date) cout << "Date: " << date << '\n'; // 정수형 인수의 date() 함수 void date(int y,int m,int d) { cout << "Date: " << y << '.'; cout << m << '.' << d << '\n'; } Date: 1994.10.5 날짜를 출력하는 함수 date()가 같은 이름으로 중복 정의 되었 고 함수의 구분은 인수의 형과 갯수로 구분된다. 순천향대학교 정보기술공학부 이 상 정 20

인수의 디폴트 값 선언 C++ 언어에서는 함수 선언 시 인수의 디폴트(default) 값을 지정 디폴트 값이 지정된 인수는 함수 호출 시 인수를 생략 인수가 생략된 경우에는 자동적으로 디폴트 값으로 선언된 값을 인수로 전달 인수의 디폴트 값의 선언 시 디폴트 값이 선언된 인수 뒤에 오는 모든 인수에 대해서는 디폴트 값을 지정해야 함 void func(char c=‘A’, int n=10, float f=12.3, char *s=“cat”); 모든 인수 생략 가능 void func(char c, int n, float f=12.3, char *s=“cat”); f,s 인수 생략 가능 void func(char c=‘A’, int n=10, float f=12.3, char *s); 인수 s 앞에 디폴트 값이 지정되어 에러 void func(char c=‘A’, int n=10, float f, char *s=“cat”); 인수 f 앞에 디폴트 값이 지정되어 에러 순천향대학교 정보기술공학부 이 상 정 21

예제 2.10 인수의 디폴트 값 선언 예 // Ex2_10.cpp #include <iostream.h> void out_num(int start, int end = 10); // 인수 end의 디폴트 값 지정 main() { cout << "normal : "; out_num(1,5); // 정상 호출 cout << "default : "; out_num(1); // 인수 생략 호출 } void out_num(int s, int e) for (int i = s; i <= e; i++) cout << i << ' '; cout << '\n'; normal  : 1 2 3 4 5 default : 1 2 3 4 5 6 7 8 9 10 함수 out_num(1,5)와 같이 두 인수 값을 모두 기술하여 호출하는 경우에는 디폴 트 값에 관계없이 정상적으로 인수가 호 출된다. out_num(1)과 같이 두번째 인수 가 생략된 경우에는 두번째 인수의 디폴 트 값 10이 전달된다. 순천향대학교 정보기술공학부 이 상 정 22

확장함수 (inline function) 확장함수를 이용하여 정의된 함수를 호출하면 호출한 함수로 분기하여 함수를 실행한 후 복귀하는 것이 아니라 호출한 함수의 내용을 복사하여 실행 C 언어의 매크로 정의함수를 사용하는 것과 같은 기능 매크로 정의함수인 경우 인수의 전달 시 부작용(side effect)을 갖는 데 반하여 확장함수는 일반함수와 같이 부작용 없이 안전하게 사용 확장함수는 일반함수와 같이 함수로 분기하여 실행한 후 복귀하는 과정이 없이 직접 실행하므로 일반함수 보다 프로그램의 실행속도가 빠름 함수를 호출할 때 마다 함수의 내용이 복사되므로 프로그램의 코드 길이가 길어진다는 단점 일반적으로 확장함수는 코드의 길이가 짧은 경우에 주로 사용 확장함수의 정의는 함수 정의 앞에 inline이란 키워드를 붙임 순천향대학교 정보기술공학부 이 상 정 23

예제 2.11 확장함수 사용 예 // Ex2_11.cpp 매크로 정의함수와 확장함수 비교 예 #include <iostream.h> #define dsqr(x) ((x) * (x)); // 매크로 정의함수 inline int isqr(int x) // 확장함수 { return x * x; } main() int a,b; a = 2; b = dsqr(++a); cout << "macro : " << b << "\n"; b = isqr(++a); cout << "inline : " << b << "\n"; macro : 16 inline : 9 매크로인 경우 ((++a)*(++a))로 단 순 확장되어 4*4로 계산되어 예상 하지 않은 16의 결과 – 컴파일러 에 따라서는 3*4=12로 계산될 수 도 있다 - 를 얻었지만 확장함수인 경우에는 마치 일반 함수를 실행하 는 것과 똑같이 3*3으로 계산되어 9의 결과가 얻어짐을 알 수 있다. 순천향대학교 정보기술공학부 이 상 정 24

참조자 (reference) 순천향대학교 정보기술공학부 이 상 정 25

참조자 선언 참조자는 한 변수를 여러 개의 다른 이름을 사용하여 참조하는 것으로 이미 정의된 변수를 다른 이름의 참조자로 사용 자료형 &참조자 = 변수 ; int a = 1; int &b = a; float x, &y = x; y =12.5; cout << x; struct man { char name[20]; char sex; int age; }; man teacher; man &student = teacher; 순천향대학교 정보기술공학부 이 상 정 26

예제 2.12 참조자 사용 예 #include <iostream.h> main() { int a, b = 10; int &c = a, &d = b; // c,d는 변수 a,b의 참조자 a = 5; cout << "a: " << a << "\tb : " << b << '\n'; cout << "c: " << c << "\td : " << d << "\n\n"; ++a; --b; ++c; --d; cout << "c: " << c << "\td : " << d << '\n'; } a: 5    b : 10 c: 5    d : 10 a: 6    b : 9 c: 6    d : 9 a: 7    b : 8 c: 7    d : 8 순천향대학교 정보기술공학부 이 상 정 27

참조자 인수 전달 함수의 정의 시 가인수를 참조자로 정의하면 주소에 의한 인수전달(call by reference) 함수 내에서 가인수인 참조자의 변경은 함수 호출 시의 인수인 실인수를 변경 기존 C 언어의 포인터를 이용하여 인수를 전달과 동일하나 함수 내에서 * 연산자를 사용하여 포인터 변수임을 명시해야 하는 번거로움 제거 int a; func(a); …… void func(int &x) { } 순천향대학교 정보기술공학부 이 상 정 28

예제 2.13 함수의 인수로써 참조자 사용 예 // Ex2_13.cpp 두 수의 교환 #include <iostream.h> void swap(int &,int &); // 두 정수형 참조자 인수를 갖는 함수 main() { int a = 3, b = 10; swap(a,b); cout << "a = " << a << '\n'; cout << "b = " << b << '\n'; } void swap(int &x, int &y) int temp; temp = x; // x와 y의 교환 x = y; y = temp; a = 10 b = 3 함수 swap()의 인수가 참조자 로 선언되었으므로 인수의 전 달이 주소로 전달되어 함수 swap()에서 교환된 값이 main()에 그대로 전달되어 출 력된다. C 언어에서 포인터를 사용하여 swap(int *, int *)으 로 인수를 정의하면 동일한 효과를 낼 수 있지만 호출 시 인수 a, b의 변수명을 그대로 사용할 수 없고 포인터 (&a,&b)로 전달해야 하고, swap() 함수에서 *x, *y로 표현해야 한다. 순천향대학교 정보기술공학부 이 상 정 29

참조자의 반환 참조자는 함수의 반환형으로도 선언돠어 사용 주소가 반환 함수 호출 시 함수는 대입 연산자(=)의 좌우측 어느 자리에도 올 수 있음 // Ex2_14.cpp #include <iostream.h> int &func(void); // 정수형의 참조자를 반환하는 함수 int x = 88; main() { func() = 100; // 함수 func()의 반환 참조자(x)에 100 대입 cout << "x : " << x << "\n"; } int &func(void) { return x; } x : 100 함수 func()는 x의 참조자를 반환하므로 따라서 함수 func() = 100은 x = 100과 같 은 의미를 갖는다. 순천향대학교 정보기술공학부 이 상 정 30

동적할당, 해제 순천향대학교 정보기술공학부 이 상 정 31

동적할당,해제 프로그램의 시작에서는 필요한 메모리의 크기를 모르고 프로그램이 실행되는 동안에 그 크기가 결정되거나 메모리를 효율적으로 사용하기 위해서는 프로그램 실행 시에 메모리를 동적할당(dynamic allocation) C 언어 void *malloc(자료형 크기); void *calloc(자료형 개수,자료형 크기); C++ 언어 new 자료형; new 자료형[자료형 개수]; C 언어 void free(변수); C++ 언어 delete 변수; 순천향대학교 정보기술공학부 이 상 정 32

동적할당,해제예 long int 형 (4 바이트) 동적할당, 해제 C 언어 long *p = malloc(sizeof(long)); …… free(p); C++ 언어 long *p = new long; …… delete p; long int 형 10개 (40 바이트) 동적할당, 해제 C 언어 long *p = calloc(10,sizeof(long)); …… free(p); C++ 언어 long *p = new long[10]; …… delete p; 순천향대학교 정보기술공학부 이 상 정 33

예제 2.15 동적할당, 해제 예 1 // Ex2_15.cpp #include <iostream.h> struct date { int yy; int mm; int dd; }; main() { date *birth = new date; // 동적할당 birth->yy = 1960; birth->mm = 6; birth->dd = 3; cout << "birthday : " << birth->yy << '.' << birth->mm << '.' << birth->dd << ".\n"; delete birth; // 동적해제 } birthday : 1960.6.3. 포인터 변수 birth 선언 시 date 형 의 구조체 크기 만큼 메모리를 할 당하여 초기화하였다. new 연산자 는 C의 다음 문과 같은 기능을 갖 는다. struct date *birth = (struct date *)malloc(sizeof(date)); 해제 시에는 delete는 C의 다음 문과 같다. free(birth); 순천향대학교 정보기술공학부 이 상 정 34

예제 2.16 동적할당, 해제 예 2 // Ex2_16.cpp #include <iostream.h> main() { cout << "size 입력 : "; int size; cin >> size; int *vector = new int[size]; // 동적할당 for (int i = 0; i < size; i++) vector[i] = i * i; for (i = 0; i < size; i++) cout << vector[i] << ' '; cout << '\n'; delete vector; // 동적해제 } size 입력 : 5 0 1 4 9 16 이에 해당하는 C의 구문은 다음과 같다.     int *vector = (int *)calloc(size,sizeof(int)); 순천향대학교 정보기술공학부 이 상 정 35

과제 다음 예제를 작성하여 실행 다음 연습문제를 작성하여 실행하고 프로그램 및 결과 설명 (홀수 문제는 교재에 답안있음) 2.3 2.4 2.7 2.9 2.10 2.11 2.13 2.16 다음 연습문제를 작성하여 실행하고 프로그램 및 결과 설명 (홀수 문제는 교재에 답안있음) 2.2 2.5 2.11 과제 작성 요령 순천향대학교 정보기술공학부 이 상 정 36

과제 2.2 문제 수정 /* 이 프로그램은 최대 공약수를 계산한다. */ #include <stdio.h> main()  {         int a, b, d, min;   printf("두 수를 입력하시오 : ");     scanf("%d %d", &a, &b);   min = a > b ? b : a;  for (d = min; d > 1; d--)       if (((a%d == 0) && ((b%d) == 0))) break;     if (d == 1)        printf("최대 공약수가 없습니다\n");     else        printf("최대 공약수는 %d\n", d); } 순천향대학교 정보기술공학부 이 상 정 37