C 9장. 구조체 #include <stdio.h> int main(void) { int num;

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 예 : 카드의.
제2장 C 언어의 확장 C++(1).
Part 12 구조체와 공용체 안산1대학 디지털정보통신과 임 성 국.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express Slide 1 (of 27)
쉽게 풀어쓴 C언어 Express 제13장 구조체 C Express Slide 1 (of 25)
제 9 장 구조체와 공용체.
-Part2- 제3장 포인터란 무엇인가.
11장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
C 11장. 포인터의 활용 #include <stdio.h> int main(void) { int num;
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express Slide 1 (of 13)
5장. 참조 타입.
C 9장. 구조체 #include <stdio.h> int main(void) { int num;
C 7장. 배열과 문자열 #include <stdio.h> int main(void) { int num;
제 3장. C보다 나은 C++ II.
C 프로그래밍.
Dynamic Memory and Linked List
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
23장. 구조체와 사용자 정의 자료형 2.
14장. 포인터와 함수에 대한 이해.
11장. 1차원 배열.
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
C#.
C언어: 구조체 (Structures).
13. 연산자 오버로딩.
C 2장. C 프로그램 시작하기 #include <stdio.h> int main(void) { int num;
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
박성진 컴퓨터 프로그래밍 기초 [09] 배열 part 1 박성진
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장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
구조체.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터 프로그래밍 기초 - 5th : 조건문(if, else if, else, switch-case) -
처음으로 배우는 C 프로그래밍 제4부 복합 데이터 형 제 7 장 배열.
4장 자료형.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
8주차: Strings, Arrays and Pointers
구조체 (Structure).
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
구조체(struct)와 공용체(union)
Summary of Pointers and Arrays
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 23. 구조체와 사용자 정의 자료형2.
Chapter 11 구조체.
제 4 장 Record.
제 29 강 스트링(string) 다루기 s a i s . s T i h t g r i n.
C 13장. 입출력 라이브러리 #include <stdio.h> int main(void) { int num;
어서와 C언어는 처음이지 제21장.
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
13. 포인터와 배열! 함께 이해하기.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

C 9장. 구조체 #include <stdio.h> int main(void) { int num; printf(“Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("Is negative.\n"); printf("num = %d\n", num); return 0; }

학습목표 ■ 구조체란 무엇인지 알아보고, 구조체를 정의하고 사용하는 방법을 알아본다. ■ 구조체 변수를 선언하고 초기화하는 방법을 알아본다. ■ 구조체 배열이나 구조체 포인터를 사용하는 방법을 알아본다. ■ 공용체란 무엇인지 알아보고, 공용체를 정의하고 사용하는 방법을 알아본다. ■ 열거체란 무엇인지 알아보고, 열거체를 정의하고 사용하는 방법을 알아본다. ■ typedef를 정의하는 방법을 알아본다. 9장. 구조체

목차 9장. 구조체 구조체 공용체와 열거체 typedef 구조체의 기본 구조체의 사용 비트필드 공용체 열거체

구조체를 사용하면 관련된 변수들을 하나로 묶어서 사용할 수 있다. 구조체의 기본 구조체를 사용하면 관련된 변수들을 하나로 묶어서 사용할 수 있다. 구조체를 사용하지 않으면 각각의 변수를 상품별로 구분해서 사용해야 합니다. 9장. 구조체

구조체의 정의(1/2) 구조체 구조체의 멤버로 일반 변수뿐만 아니라 배열이나 포인터를 선언할 수도 있다. 구조체의 기본 구조체의 정의(1/2) 구조체의 멤버로 일반 변수뿐만 아니라 배열이나 포인터를 선언할 수도 있다. 구조체를 정의하면 새로운 데이터형이 만들어진다. 구조체를 정의한다고 해서 구조체의 멤버가 메모리에 할당되지는 않는다. 구조체형의 변수를 선언하면, 구조체의 멤버들이 메모리에 할당된다. 9장. 구조체

구조체 구조체의 기본 구조체의 정의(2/2) 9장. 구조체

구조체의 크기 구조체 구조체의 크기는 모든 멤버들의 크기의 합보다 크거나 같다. 구조체의 기본 구조체의 크기 구조체의 크기는 모든 멤버들의 크기의 합보다 크거나 같다. 메모리 정렬 때문에 멤버들 사이에 패딩이 들어갈 수도 있다. 구조체의 크기를 구하려면 sizeof 연산자를 이용해야 한다. 9장. 구조체

구조체 변수의 선언(1/3) 구조체 struct키워드 없이 태그명만 사용하면 컴파일 에러가 되므로 주의해야 한다. 구조체의 기본 구조체 변수의 선언(1/3) struct키워드 없이 태그명만 사용하면 컴파일 에러가 되므로 주의해야 한다. 9장. 구조체

구조체 변수의 선언(2/3) 구조체 구조체 변수를 선언하면 구조체 변수가 가진 멤버들이 메모리에 선언된 순서대로 할당된다. 구조체의 기본 구조체 변수의 선언(2/3) 구조체 변수를 선언하면 구조체 변수가 가진 멤버들이 메모리에 선언된 순서대로 할당된다. 9장. 구조체

구조체 변수의 선언(3/3) 구조체 구조체를 정의하면서 구조체 변수를 함께 선언할 수 있다. 구조체의 기본 구조체 변수의 선언(3/3) 구조체를 정의하면서 구조체 변수를 함께 선언할 수 있다. 구조체를 정의하면서 변수를 함께 선언할 때는 태그명을 생략할 수 있다. 9장. 구조체

구조체 변수의 사용(1/2) 구조체 구조체의 멤버에 접근할 때는 멤버 접근 연산자인 .를 이용한다. 구조체의 기본 9장. 구조체

구조체 구조체의 기본 구조체 변수의 사용(2/2) 9장. 구조체

구조체 변수의 초기화 구조체 { } 안에 멤버들의 초기값을 순서대로 나열한다. 구조체의 기본 구조체 변수의 초기화 { } 안에 멤버들의 초기값을 순서대로 나열한다. { } 안에 지정한 초기값이 멤버의 개수보다 부족하면 나머지 멤버들은 0으로 초기화된다. 9장. 구조체

product 구조체의 정의 및 사용 예(1/2) 구조체의 기본 product 구조체의 정의 및 사용 예(1/2) 01: /* Ex09_01.c */ 02: #include <stdio.h> 03: #include <string.h> 04: 05: struct product { 06: char name[20]; 07: int price; 08: int stock; 09: }; 10: 11: int main(void) 12: { 13: struct product prd1; 14: struct product prd2 = {"생수2L", 9500, 20}; 15: 구조체의 정의 구조체 변수의 선언 구조체 변수의 선언 및 초기화 9장. 구조체

student 구조체의 정의 및 사용 예(2/2) 구조체의 기본 student 구조체의 정의 및 사용 예(2/2) 16: prd1.price = 15000; 17: prd1.stock = 30; 18: strcpy(prd1.name, "커피믹스"); 19: 20: printf("%s : %d원, 재고량=%d\n", 21: prd1.name, prd1.price, prd1.stock); 22: printf("%s : %d원, 재고량=%d\n", 23: prd2.name, prd2.price, prd2.stock); 24: 25: return 0; 26: } 구조체 변수의 사용 9장. 구조체

point 구조체의 정의 및 사용 예(1/2) 구조체 구조체의 기본 9장. 구조체 01: /* Ex09_02.c */ 02: #include <stdio.h> 03: 04: struct point { 05: int x, y; 06: }; 07: 08: int main(void) 09: { 10: struct point pt1, pt2; 11: 12: printf("pt1의 x, y 좌표를 입력하세요 : "); 13: scanf("%d %d", &pt1.x, &pt1.y); 14: 15: printf("pt2의 x, y 좌표를 입력하세요 : "); 16: scanf("%d %d", &pt2.x, &pt2.y); 17: 구조체의 정의 구조체 변수의 선언 구조체 변수의 멤버 입력 구조체 변수의 멤버 입력 9장. 구조체

point 구조체의 정의 및 사용 예(2/2) 구조체 구조체의 기본 9장. 구조체 18: if( pt1.x == pt2.x && pt1.y == pt2.y ) 19: printf("두 점의 좌표가 같습니다.\n"); 20: else 21: printf("두 점의 좌표가 다릅니다.\n"); 22: 23: return 0; 24: } 두 점의 좌표가 같은지 검사 9장. 구조체

구조체 간의 초기화 및 대입(1/2) 구조체 같은 구조체형의 변수들끼리는 서로 초기화나 대입이 가능하다. 구조체의 활용 구조체 간의 초기화 및 대입(1/2) 같은 구조체형의 변수들끼리는 서로 초기화나 대입이 가능하다. 구조체간의 초기화 : 멤버 대 멤버 초기화 동일한 멤버 간에 1:1로 복사해서 초기화 구조체간의 대입 : 멤버 대 멤버 대입 9장. 구조체

구조체 구조체의 활용 구조체 간의 초기화 및 대입(2/2) 9장. 구조체

구조체 간의 초기화 및 대입(1/2) 구조체 구조체의 활용 9장. 구조체 01: /* Ex09_03.c */ 02: #include <stdio.h> 03: 04: struct point { 05: int x, y; 06: }; 07: 08: int main(void) 09: { 10: struct point pt1 = {10, 20}; 11: struct point pt2 = {30, 40}; 12: struct point pt3 = pt1; 13: struct point pt4; 14: 15: printf("pt1의 좌표 : %d, %d\n", pt1.x, pt1.y) 16: printf("pt3의 좌표 : %d, %d\n", pt3.x, pt3.y); 17: if( pt1.x == pt3.x && pt1.y == pt3.y ) 18: printf("pt1과 pt3의 좌표가 같습니다.\n"); 19: else 20: printf("pt1과 pt3의 좌표가 다릅니다.\n"); 구조체 변수의 선언 및 초기화 구조체 간의 초기화 구조체 간의 대입 9장. 구조체

구조체 간의 초기화 및 대입(2/2) 구조체 구조체의 활용 9장. 구조체 21: 22: pt4 = pt2; 23: 24: printf("pt2의 좌표 : %d, %d\n", pt2.x, pt2.y); 25: printf("pt4의 좌표 : %d, %d\n", pt4.x, pt4.y); 26: if( pt2.x == pt4.x && pt2.y == pt4.y ) 27: printf("pt2과 pt4의 좌표가 같습니다.\n"); 28: else 29: printf("pt2과 pt4의 좌표가 다릅니다.\n"); 30: 31: return 0; 32: } 구조체 간의 대입 9장. 구조체

구조체 간의 비교 구조체 구조체 변수 간에는 직접 비교 연산을 할 수 없다. 구조체의 활용 구조체 간의 비교 구조체 변수 간에는 직접 비교 연산을 할 수 없다. 두 구조체 변수의 값이 같은지 비교하려면 구조체 변수끼리 비교하는 대신 멤버 대 멤버로 비교해야 한다. 9장. 구조체

구조체 배열(1/2) 구조체 같은 구조체형의 변수를 여러 개 사용하려면 구조체 배열을 선언한다. 구조체의 활용 구조체 배열(1/2) 같은 구조체형의 변수를 여러 개 사용하려면 구조체 배열을 선언한다. 구조체 배열도 일반 배열처럼 인덱스를 이용해서 배열의 원소에 접근한다. 9장. 구조체

구조체 배열(2/2) 구조체 구조체 배열을 초기화하려면 { } 안에 배열 원소의 초기값을 나열한다. 구조체의 활용 9장. 구조체

구조체 배열을 이용한 상품 관리 프로그램(1/3) 구조체의 활용 구조체 배열을 이용한 상품 관리 프로그램(1/3) 01: /* Ex09_04.c */ 02: #include <stdio.h> 03: #include <string.h> 04: 05: #define MAX_PRODUCT 5 06 07: struct product { 08: char name[20]; 09: int price; 10: int stock; 11: }; 12: 13: int main(void) 14: { 15: PRODUCT prd[MAX_PRODUCT]; 16: int i; 17: 18: printf("%d 명의 상품 정보를 입력하세요.\n", MAX_PRODUCT); 구조체 배열의 크기 구조체의 정의 구조체 배열의 선언 9장. 구조체

구조체 배열을 이용한 상품 관리 프로그램(2/3) 구조체의 활용 구조체 배열을 이용한 상품 관리 프로그램(2/3) 19: for( i = 0 ; i < MAX_PRODUCT ; i++ ) 20: { 21: printf("상품명 : "); 22: scanf("%s", prd[i].name); 23: printf("가격, 재고량 : "); 24: scanf("%d %d", &prd[i].price, &prd[i].stock); 25: } 26: 27: printf("\n상 품 명 가 격 재 고 량\n"); 28: for( i = 0; i < MAX_PRODUCT; i++ ) 29: { 30: printf("%-20s %8d %10d", prd[i].name, prd[i].price, prd[i].stock); 31: if( prd[i].stock < 10 ) 32: printf(" ==> 재고 부족! 주문 필요!\n"); 33: else 34: printf("\n"); 35: } 37: 38: return 0; 39: } 구조체 배열의 입력 구조체 배열의 출력 9장. 구조체

구조체 배열을 이용한 상품 관리 프로그램(3/3) 구조체의 활용 구조체 배열을 이용한 상품 관리 프로그램(3/3) 9장. 구조체

구조체 구조체의 활용 구조체 포인터(1/2) 구조체 변수의 주소를 저장하는 포인터 9장. 구조체

구조체 포인터(2/2) 구조체 구조체 포인터로 구조체의 멤버에 접근할 때는 -> 연산자를 사용한다. 구조체의 활용 구조체 포인터(2/2) 구조체 포인터로 구조체의 멤버에 접근할 때는 -> 연산자를 사용한다. 구조체 변수로 멤버에 접근할 때는 . 연산자를 사용한다. 9장. 구조체

구조체 포인터의 사용 예(1/2) 구조체 구조체의 활용 9장. 구조체 01: /* Ex09_05.c */ 02: #include <stdio.h> 03: #include <math.h> 04: 05: struct point { 06: int x, y; 07: }; 08: 09: double GetDistance(struct point* p1, struct point* p2); 10: 11: int main(void) 12: { 13: struct point pt1 = {0, 0}; 14: struct point pt2 = {10, 10}; 15: double distance; 16: 17: distance = GetDistance(&pt1, &pt2); 18: printf("두 점 사이의 거리 : %5.2f\n", distance); 19: 구조체의 정의 구조체 포인터를 매개변수로 갖는 함수 선언 구조체 변수의 주소를 함수의 인자로 전달 9장. 구조체

구조체 포인터의 사용 예(2/2) 구조체 구조체의 활용 9장. 구조체 20: return 0; 21: } 22: 23: double GetDistance(struct point* p1, struct point* p2) 24: { 25: int dx = p2->x - p1->x; 26: int dy = p2->y - p1->y; 27: 28: return sqrt(dx*dx + dy*dy); 29: } 구조체 포인터를 인자로 갖는 함수 정의 9장. 구조체

비트필드(1/3) 구조체 구조체가 가진 멤버를 비트 단위로 사용한다. 비트필드를 정의할 때는 멤버 이름 다음에 :을 쓰고 비트 수를 적어주면 된다. 9장. 구조체

비트필드(2/3) 구조체 메모리에 할당할 때, 첫 번째 멤버를 최하위 비트에서부터 할당한다. 비트필드의 멤버에 주어진 비트로 표현 가능한 범위 밖의 값을 저장하면 오버플로우가 발생한다. 비트필드도 구조체와 같은 방법으로 사용한다. 9장. 구조체

비트필드(2/3) 구조체 비트필드를 정의할 때는 중간에 일부 비트를 비워두고 멤버를 특정 비트에 할당할 수있다. 비트필드 9장. 구조체

비트필드의 사용 예(1/2) 구조체 비트필드 9장. 구조체 01: /* Ex09_06.c */ 02: #include <stdio.h> 03: 04: struct time { 05: unsigned int sec : 6; 06: unsigned int min : 6; 07: unsigned int hour : 5; 08: }; 09: 10: int main(void) 11: { 12: struct time t1; 13: 14: printf("time 구조체의 크기 : %d\n", sizeof(struct time)); 15: 비트필드의 정의 비트필드 변수의 선언 비트필드의 크기 9장. 구조체

비트필드의 사용 예(2/2) 구조체 비트필드 9장. 구조체 16: t1.hour = 5; 17: t1.min = 30; 18: t1.sec = 70; 19: 20: printf("%02d:%02d:%02d\n", t1.hour, t1.min, t1.sec); 21: 22: return 0; 23: } 비트필드 멤버의 오버플로우 발생 9장. 구조체

공용체의 정의 공용체와 열거체 공용체는 여러 멤버들이 메모리를 공유해서 사용한다. 공용체를 정의하면 공용체도 구조체처럼 새로운 데이터형이 된다. 9장. 구조체

공용체의 사용(1/3) 공용체와 열거체 공용체 변수의 멤버들은 모두 같은 주소에 할당된다. 공용체의 크기는 공용체의 멤버 중 가장 크기가 큰 멤버에 의해 결정된다. 9장. 구조체

공용체의 사용(2/3) 공용체와 열거체 공용체 변수를 초기화할 때는 첫 번째 멤버의 초기값만 지정한다. 공용체의 멤버에 접근할 때도 . 와 -> 연산자를 사용한다. 9장. 구조체

공용체의 사용 예(1/2) 공용체와 열거체 공용체 9장. 구조체 01: /* Ex09_07.c */ 02: #include <stdio.h> 03: 04: union data { 05: unsigned long dword; 06: unsigned char byte[4]; 07: }; 08: 09: int main(void) 10: { 11: union data d1; 12: int i; 13: 14: printf("data 공용체의 크기 : %d\n", sizeof(union data)); 15: 공용체의 정의 공용체 변수의 선언 공용체의 크기 구하기 9장. 구조체

공용체의 사용 예(2/2) 공용체와 열거체 공용체 9장. 구조체 16: d1.dword = 0x12345678; 17: printf("d1.dword = %08x\n", d1.dword); 18: for( i = 0 ; i < 4 ; i++ ) 19: printf("d1.byte[%d] = %02x\n", i, d1.byte[i]); 20: 21: return 0; 22: } 공용체의 사용 9장. 구조체

리틀 엔디안과 빅 엔디안 공용체와 열거체 리틀 엔디안 : 최하위 바이트부터 메모리에 저장하는 방식 빅 엔디안 : 최상위 바이트부터 메모리에 저장하는 방식 인텔 계열의 CPU는 리틀 엔디안 방식을 사용하고, 모토로라 계열의 CPU는 빅 엔디안 방식을 사용한다. 9장. 구조체

공용체의 사용(3/3) 공용체와 열거체 공용체의 멤버들은 동시에 사용되지 않는다. job_code가 0이면 job_info 공용체 변수의 school_name을 사용하고, job_code가 1이면 company_name을 사용한다. 공용체의 멤버인 school_name과 company_name이 동시에 사용되는 경우는 없으며, 항상 둘 중 한 가지 값을 저장하는 용도로 사용된다. 9장. 구조체

공용체와 열거체 공용체 구조체와 공용체의 비교 공용체의 정의 구조체의 정의 9장. 구조체

공용체와 열거체 열거체 열거체의 정의 나열된 정수 값 중 하나를 갖는 정수형의 일종 9장. 구조체

공용체와 열거체 열거체 열거체의 사용 열거체도 일종의 사용자 정의형이므로 열거체를 일단 정의하고 나면, 열거체형의 변수를 선언하거나 배열 또는 구조체를 선언할 수 있다. 열거체 변수에는 열거체 정의에 나열된 열거 상수 중 하나를 저장하고 사용한다. 열거 상수만 정수형 상수로 정의할수도 있다. 열거체와 열거 상수는 프로그램의 가독성(readability)을 향상시키는 기능이다. 9장. 구조체

열거체의 사용 예(1/2) 공용체와 열거체 열거체 9장. 구조체 01: /* Ex09_08.c */ 02: #include <stdio.h> 03: 04: enum week {sun, mon, tue, wed, thu, fri, sat}; 05: 06: int main(void) 07: { 08: enum week weekday; 09: 10: weekday = mon; 11: 12: switch( weekday ) 13: { 14: case sun: 15: printf("일요일입니다.\n"); 16: break; 17: case mon: 18: printf("월요일입니다.\n"); 19: break; 열거체의 정의 열거체형 변수의 선언 열거 상수의 사용 9장. 구조체

열거체의 사용 예(2/2) 공용체와 열거체 열거체 9장. 구조체 20: case tue: 21: printf("화요일입니다.\n"); 22: break; 23: case wed: 24: printf("수요일입니다.\n"); 25: break; 26: case thu: 27: printf("목요일입니다.\n"); 28: break; 29: case fri: 30: printf("금요일입니다.\n"); 31: break; 32: case sat: 33: printf("토요일입니다.\n"); 34: break; 35: } 36: 37: return 0; 38: } 9장. 구조체

typedef typedef의 정의 typedef의 정의 typedef는 기존의 데이터형에 새로운 이름을 붙인다.

구조체와 typedef typedef 구조체나 공용체, 열거체를 정의할 때, typedef가 유용하게 사용된다.

typedef의 사용 예 typedef typedef의 정의 9장. 구조체 01: /* Ex09_09.c */ 02: #include <stdio.h> 03: 04: struct point { 05: int x; 06: int y; 07: }; 08: 09: typedef struct point POINT; 10: 11: int main(void) 12: { 13: struct point pt1 = {10, 20}; 14: POINT pt2; 15: 16: pt2 = pt1; 17: printf("pt2의 좌표 : %d, %d\n", pt2.x, pt2.y); 18: 19: return 0; 20: } 구조체의 정의 typedef 정의 같은 구조체 변수 간의 대입 9장. 구조체

typedef의 사용 목적(1/2) typedef 프로그램의 이식성을 향상시키기 위한 목적으로 사용된다.

typedef의 사용 목적(2/2) typedef 프로그램의 가독성을 향상시키기 위한 목적으로 사용된다.

구조체 학습정리 구조체 : 서로 다른 데이터 형의 변수들을 하나로 묶어서 사용하는 기능 구조체의 정의 struct product { char name[20]; int price, stock; }; 구조체 변수의 선언 : 구조체 변수 선언 시 멤버들이 메모리에 할당된다. struct product prd1; 구조체의 멤버 접근 : 멤버 접근 연산자(.)를 이용한다. prd1.price = 12000; 구조체의 초기화 : { }안에 초기값을 나열한다. struct product prd1 = {"커피믹스", 1500, 30}; 구조체 배열 및 포인터 : 구조체 배열을 선언하거나 포인터를 선언할 수 있다. struct product prd[3]; struct product *p = &prd1; 9장. 구조체

공용체와 열거체 typedef 학습정리 공용체 : 공용체의 멤버들은 모두 같은 주소에 할당되므로 메모리를 공유 union data { unsigned long dword; unsigned char byte[4]; }; 열거체 : 정수형의 일종으로 변수가 가질 수 있는 값을 열거 상수로 나열 enum week {sun, mon, tue, wed, thu, fri, sat}; typedef typedef란 : 기존의 데이터 형에 새로운 이름을 만드는 기능 typedef unsigned int UINT; typedef의 사용목적 : typedef는 이식성과 가독성을 제공 9장. 구조체

9장. 구조체 수고하셨습니다. 질문 있습니까? NEXT Chapter 10장. 함수의 활용