제2장 C 언어의 확장 C++(1).

Slides:



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

Chapter 12. 배열. 배열  동일한 항목들이 동일한 크기로 연속적으로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는 자료 구조.
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
1 구조체 윤 홍 란 컴퓨터 프로그래밍 2 구조체 정의  구조체란 ? o 서로 다른 형의 변수들을 하나로 묶어주는 mechanism. (cf. 배열 : 같은 형의 변수들을 하나로 묶어주는 mechanism) o 예 : 카드의.
1 16 유도 자료형 학기. Perfect C 2 구조체 (struct)  구조체의 필요성  책에 대한 정보를 살펴보면 매우 다양  struct  서로 다른 자료형의 변수들을 묶어서 만든 하나의 새로운 자료형을 구조체 (struct)  구조체는 연관된.
스트림 입출력 변수,상수,형변환 열거형, 구조체, 공용체 함수 참조자 (reference) 동적할당,해제 과제
Part 03 상수, 변수, 자료형 ©우균, 창병모 © 우균, 창병모.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express Slide 1 (of 27)
제 9 장 포인터.
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] 기말고사
-Part2- 제3장 포인터란 무엇인가.
11장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
자료 구조: Chapter 3 (2)구조체, 포인터
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
개정판 누구나 즐기는 C언어 콘서트 제9장 포인터 출처: pixabay.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
2007 1학기 16 구조체.
5장. 참조 타입.
제 3장. C보다 나은 C++ II.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
23장. 구조체와 사용자 정의 자료형 2.
14장. 포인터와 함수에 대한 이해.
C 9장. 구조체 #include <stdio.h> int main(void) { int num;
11장. 1차원 배열.
C#.
13. 연산자 오버로딩.
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
인터넷응용프로그래밍 JavaScript(Intro).
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express Slide 1 (of 22)
19. 함수 포인터와 void 포인터.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
에어 조건문.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
컴퓨터 프로그래밍 기초 - 5th : 조건문(if, else if, else, switch-case) -
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
Chapter 08. 함수.
Choi Seong Yun 컴퓨터 프로그래밍 기초 #03 : 변수와 자료형 Choi Seong Yun
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
^^ Computer Programming 2 dmpr.cnu.ac.kr/~daygax.
함수(Function) ◈ 함수의 개념 및 사용 이유 ◈ 함수 정의, 호출 및 선언 ◈ 지역변수와 전역변수 ◈ return 문
제 6 장 함수(functions).
에어 PHP 입문.
구조체 (Structure).
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
구조체(struct)와 공용체(union)
윤성우의 열혈 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.
7 생성자 함수.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

제2장 C 언어의 확장 C++(1)

구조체 정의 구조체를 구성하는 하나 하나의 항목을 구조체 멤버(구성요소, member) 구조체 멤버의 자료형은 일반 변수, 포인터 변수, 구조체 변수 및 구조체 포인터도 허용 구조체 정의 구문에서는 각 구성요소의 초기값을 대입할 수 없다. 한 구조체 내부에서 선언되는 구조체 멤버의 이름은 모두 유일해야 한다. 이러한 구조체의 정의는 구조체 struct book을 새로운 자료형으로 정의하는 구문

구조체 변수 선언 구조체 정의 구문이 이미 기술되었으면, 그 이후에는 구조체에 대한 변수 선언이 가능 구조체 변수 선언 방법은 자료형에 해당하는 struct book 다음에 구조체 변수 이름 mybook을 기술 위의 구문을 살펴보면 구조체 struct book의 정의 위치가 메인 함수의 상위 부분이기 때문에, 정의 구문이 나온 이후에는 구조체 자료형 struct book은 파일 어디에서나 이용이 가능

구조체의 저장공간 구조체 book의 변수인 mybook은 멤버의 여러 자료형이 하나로 묶인 변수로서 다음과 같은 구조로 메모리에 할당 위 변수의 크기는 각 멤버의 크기의 합(50+50+50+4+4=158)으로 158 바이트 정도 연산자 sizeof를 이용하여 변수의 크기 또는 구조체의 크기를 알 수 있음 위와 같이 sizeof 연산자를 이용하면 예상한 구조체의 크기보다 큰 값이 나올 수 있으며 시스템마다 차이가 있을 수 있음 printf("struct book의 사이즈는 sizeof (struct book) = %d\n\n", sizeof (struct book) );

구조체 정의와 변수 선언 구조체 변수를 선언하는 다른 방법은 다음과 같이 구조체 정의와 변수 선언을 함께하는 방법 위 구문에서 변수 yourbook과 mybook은 모두 같은 구조체 struct book 자료형 위 구조체 정의 구문에서 구조체 태그 이름 book을 생략해도 구조체 변수 선언이 가능

공용체 정의 공용체 union data를 정의하는 구문 공용체는 서로 다른 자료형을 동일한 저장 공간에 이용하는 자료형 구조체 정의에서 키워드 struct를 union으로 사용한 것과 비슷 공용체의 멤버는 모든 멤버가 동일한 저장 공간을 사용하므로 동시에 여러 멤버의 값을 저장하여 이용할 수 없으며, 마지막에 저장한 하나의 멤버의 자료 값만을 저장 union data { char ch; int cnt; double real; };

공용체 메모리 내부 메모리 동일한 저장장소를 함께 이용 공용체 union data 자료형의 변수 data1은 멤버의 유형이 char, int, double이므로 멤버 중 가장 큰 크기인 double 형의 8바이트를 공용체의 저장공간으로 확보하여 세 개의 멤버가 함께 이용 동일한 저장장소를 함께 이용 멤버가 char인 경우는 8바이트 중에서 첫 1바이트만 이용하고, int인 경우는 전체 공간의 첫 4바이트만 이용하며, double인 경우는 8바이트 공간을 모두 사용 union data { char ch; int cnt; double real; } data1 ;

공용체 예제소스 #include <stdio.h> void main() { union data { char c; short int s; long l; }u; u.l = 0x12345678; printf(" %x \n" , u.l); printf(" %x \n" , u.s); printf(" %x \n" , u.c); }

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

예제 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 :: 연산자는 블럭의 위치 에 관계없이 외부변수를 참조한다.

예제 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; // 구조체 복사

예제 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

함수의 중복정의 함수의 중복 정의 (function overloading) 같은 이름을 갖는 각 함수는 인수의 형과 갯수, 함수의 반환형에 의해 구분 함수 뿐만 아니라 연산자의 중복 정의도 가능한데 이에 관한 자세한 소개는 5장에서 소개

예제 2.9 함수의 중복 정의 // 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()가 같은 이름으로 중복 정의 되었 고 함수의 구분은 인수의 형과 갯수로 구분된다.

인수의 디폴트 값 선언 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 앞에 디폴트 값이 지정되어 에러

예제 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이 전달된다.

연습문제 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); }

연습문제 2.5 작성 연습문제 2.5를 작성하여 실행