11장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용

Slides:



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

1 구조체 윤 홍 란 컴퓨터 프로그래밍 2 구조체 정의  구조체란 ? o 서로 다른 형의 변수들을 하나로 묶어주는 mechanism. (cf. 배열 : 같은 형의 변수들을 하나로 묶어주는 mechanism) o 예 : 카드의.
1 16 유도 자료형 학기. Perfect C 2 구조체 (struct)  구조체의 필요성  책에 대한 정보를 살펴보면 매우 다양  struct  서로 다른 자료형의 변수들을 묶어서 만든 하나의 새로운 자료형을 구조체 (struct)  구조체는 연관된.
제2장 C 언어의 확장 C++(1).
제6장 조건문.
데이터의 표현과 연산 (1) (Chapter 3)
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express Slide 1 (of 27)
쉽게 풀어쓴 C언어 Express 제13장 구조체 C Express Slide 1 (of 25)
제 9 장 구조체와 공용체.
-Part2- 제3장 포인터란 무엇인가.
구조체 활용 구조체 활용.
쉽게 풀어쓴 C언어 Express 제13장 구조체 C Express.
C 11장. 포인터의 활용 #include <stdio.h> int main(void) { int num;
자료 구조: Chapter 3 (2)구조체, 포인터
컴퓨터의 기초 제 4강 - 표준 입출력, 함수의 기초 2006년 4월 10일.
6장. printf와 scanf 함수에 대한 고찰
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
누구나 즐기는 C언어 콘서트 제4장 수식과 연산자.
연산자 대입 연산자 산술 연산자 관계 연산자 논리 연산자 비트 연산자 콤마 연산자 축약 연산자 sizeof 연산자
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
C 9장. 구조체 #include <stdio.h> int main(void) { int num;
컴퓨터 프로그래밍 기초 - 2nd : scanf(), printf() 와 연산자 -
C 프로그래밍.
C 프로그래밍.
7장 배열 배열의 정의 배열의 초기화 1차원 배열 2차원 및 다차원 배열 문자 배열 배열과 구조.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Chapter 06. 선택문.
변수와 자료형.
12장 파일처리와 매크로 파일 입출력 함수 문자 입출력 함수 라인 입출력 함수 불록 입출력 함수 매크로.
23장. 구조체와 사용자 정의 자료형 2.
14장. 포인터와 함수에 대한 이해.
C 9장. 구조체 #include <stdio.h> int main(void) { int num;
11장. 1차원 배열.
2장 표준 입출력 표준 입출력 함수의 종류 형식화된 입출력 문자 입출력 문자열 입출력.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express Slide 1 (of 22)
19. 함수 포인터와 void 포인터.
구조체.
컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -
제어문 & 반복문 C스터디 2주차.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
게임프로그래밍 I - 1차원 배열 - 공주대학교 게임디자인학과 박 찬 교수 2011년 4월 25일.
4장 자료형.
Chapter 05. 입출력 함수.
실습과제 1(조건문, ) 표준입력으로 수축기 혈압을 입력 받아 그에 따른 적당한 표현을 화면에 출력하는 프로그램을 if-else 문을 이용하여 작성.
5장 선택제어문 if 선택문 switch-case 선택문 다양한 프로그램 작성 조건 연산자.
-Part2- 제1장 1차원 배열이란 무엇인가.
6장 반복제어문 for 문 while 문 do while 문 기타 제어문.
누구나 즐기는 C언어 콘서트 제2장 기초 사항 IT응용시스템공학과 김형진 교수.
-Part1- 제8장 조건문이란 무엇인가 (교재 199페이지 ~ 224페이지)
빛 의 합 성 과 학 1 학년 Ⅱ. 빛 > 2. 빛의 색( 8/8 ) [초기 화면]
구조체 (Structure).
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express Slide 1 (of 28)
컴퓨터 프로그램은 여러 기능의 복합체이다. 라이브러리 함수와 사용자 정의 함수
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
컴퓨터 프로그래밍 기초 - 11th : 파일 입출력 및 구조체 -
구조체(struct)와 공용체(union)
Structures Summary.
실습과제 1번 생성된 파일 basic.txt를 프로젝트 폴더에서 메모장으로 열고 내용을 확인
개정판 누구나 즐기는 C언어 콘서트 제11장 구조체, 공용체, 열거형 출처: pixabay.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
Chapter 09. 배열.
3b장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

11장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용 함수의 인자로 구조체 사용하기 열거형

구조체 정의 구조체 정의

구조체 변수의 선언 02 구조체 변수의 선언 students 구조체 정의 struct students { char name[20]; char address[30]; char tel[15]; int grade int age } ; students 구조체 선언 int main( ) { struct students st1; ......... return 0; }

구조체 포인터 선언 및 초기 03 구조체 포인터 선언 및 초기 struct ThreeDime { double x; double y; double z; }; typedef struct ThreeDime ThreeDime; ThreeDime A1= { 3, 1, 8}; ThreeDime* pA1 = &A1; // 포인터 선언 및 초기화

【예제 11-1】Ex1.c 02 구조체 초기화 예제 01 #include <stdio.h> 02 struct list { 03    char name; 04    char sex; 05   int age; 06 } ; 07 int main(void) 08 { 09 struct list st1, st2; 10 st1.name = 'T'; 11 st1.sex = 'M'; 12 st1.age = 25; 13 14 st2.name = 'S'; 15 st2.sex = 'F'; 16 st2.age = 28; 17 printf("이름    성별    나이\n"); 18 printf("-----------------------\n"); 19 printf(" %c       %c       %d\n", st1.name, st1.sex, st1.age); 20 printf(" %c       %c       %d\n", st2.name, st2.sex, st2.age); 21 return 0; 22 }

【예제 11-2】Ex2.c 02 구조체 초기화 예제 01 #include <stdio.h> 02 struct list { 03    char name; 04    char sex; 05    int age; 06 } ; 07 int main(void) 08 { 09 struct list st1 = {‘T', 'M', 25}; 10 11 printf("구조체 list의 크기는 %d이다\n", sizeof(struct list)); 12 printf("구조체 객체 st1의 크기는 %d이다\n", sizeof(st1)); 13 return 0; 14 } 표준입력 스트림

【예제 11-3】Ex3.c 02 구조체에서 할당연산자 사용 예제 01 #include <stdio.h> 02 struct list { 03   char name; 04   char sex; 05   int age; 06 } ; 07 int main(void) 08 { 09 struct list st1 = {‘T', 'M', 25}; 10 struct list st2, st3 = {'P', 'F', 30}; 11 st2 = st1; 12 st3.name = st1.name; 13 st3.sex = st1.sex; 14 printf("     이름    성별    나이\n"); 15 printf("-----------------------\n"); 16 printf(" st1  %c       %c       %d\n", st1.name, st1.sex, st1.age); 17 printf(" st2  %c       %c       %d\n", st2.name, st2.sex, st2.age); 18 printf(" st3  %c       %c       %d\n", st3.name, st3.sex, st3.age); 19 return 0; 20 }

【예제 11-4】Ex4.c 02 구조체 예제 01 #include <stdio.h> 02 struct students { 03     char name[20]; 04     char address[30]; 05     int age; 06 };             07 typedef struct students student; 08 int main(void) 09 { 10   student st1 = {"Moon", "Seoul", 25}; 11   struct students st2 = {"John", "London", 30}; 12  printf("학생 1은 성이 %s 이고 %s 에 살며 %d 살이다.\n", 13          st1.name, st1.address, st1.age); 14   printf("학생 2는 성이 %s 이고 %s 에 살며 %d 살이다.\n", 15          st2.name, st2.address, st2.age); 16     return 0; 17 }

【예제 11-5】Ex5.c 02 구조체 예제 01 #include <stdio.h> 02 #include <math.h> 03 struct ThreeDime { 04    double x; 05    double y; 06    double z; 07 };         08 typedef struct ThreeDime ThreeDime; 09 int main(void) 10 { 11       double D1, D2; 12        ThreeDime A1, A2; 13        printf("3차원의 점 A1의 x, y, z 점을 입력하시오.\n"); 14        scanf("%lf %lf %lf", &A1.x, &A1.y, &A1.z); 15        printf("\n3차원의 점 A2의 x, y, z 점을 입력하시오.\n"); 16        scanf("%lf %lf %lf", &A2.x, &A2.y, &A2.z); 17        D1 = sqrt(A1.x * A1.x + A1.y * A1.y + A1.z * A1.z); 18        D2 = sqrt((A1.x-A2.x)*(A1.x-A2.x) + 19       (A1.y-A2.y)*(A1.y-A2.y) + (A1.z-A2.z)*(A1.z-A2.z)); 20        printf("\nA1점과 원점과의 거리는 %.2lf 이다.\n\n", D1); 21        printf("A1점과 A2점과의 거리는 %.2lf 이다.\n", D2); 22        return 0; 23 }

구조체 포인터를 통한 구조체 멤버 접근 04 구조체 포인터를 통한 구조체 멤버 접근 구조체 포인터 -> 멤버명 ex ) pA1->x pA1->y pA1->z

【예제 11-6】Ex6.c 02 포인터를 사용하는 구조체 01 #include <stdio.h> 02 struct ThreeDime { 03    double x; 04    double y; 05    double z; 06 };         07 typedef struct ThreeDime ThreeDime; 08 int main(void) 09 { 10        ThreeDime A1 = {3, 1, 8}; 11        ThreeDime* pA1 = &A1; 12        printf("3차원의 점 A1의 x : %.2lf, y : %.2lf,  z : %.2lf 이다.\n\n", 13                pA1->x, pA1->y, pA1->z);           14        return 0; 15 } 표준입력 스트림

【예제 11-7】Ex7.c 02 포인터를 사용하는 구조체 29 int main(void) 30 { 31        double D1, D2; 32        ThreeDime A1, A2, A3; 33        printf("3차원의 점 A1의 x, y, z 점을 입력하 시오.\n"); 34        scanf("%lf %lf %lf", &A1.x, &A1.y, &A1.z); 35        printf("\n3차원의 점 A2의 x, y, z 점을 입력 하시오.\n"); 36        scanf("%lf %lf %lf", &A2.x, &A2.y, &A2.z); 37        // D1 : A1점과 원점과의 거리 38        D1 = Distance(A1); 39        // D2 : A1점과 A2점과의 거리 40        D2 = Distance(A1, A2); 41         // A1점을 원점에 대칭 시킨 점 42         A3 = SymOri(A1);     43        printf("\nA1점과 원점과의 거리는 %.2lf 이다.\n\n", D1); 44       printf("A1점과 A2점과의 거리는 %.2lf 이다. \n", D2); 45        printf("A1점을 원점에 대칭 시킨 점의 x : %.2lf, y : %.2lf, z : %.2lf 이다.\n\n", A3.x, A3.y, A3.z); 46       return 0; 47 } 01 #include <stdio.h> 02 #include <math.h> 03 struct ThreeDime { 04    double x; 05    double y; 06    double z; 07 };         08 typedef struct ThreeDime ThreeDime; 09 double Distance1(ThreeDime a) 10 { 11    double d; 12    d = sqrt(a.x * a.x + a.y * a.y + a.z * a.z); 13   return d; 14 } 15 double Distance2(ThreeDime a, ThreeDime b) 16 { 17    double d; 18    d = sqrt((a.x-b.x)*(a.x-b.x) +(a.y-b.y)*(a.y-b.y) 19 + (a.z-b.z)*(a.z-b.z)); 20    return d; 21 } 22 ThreeDime SymOri(ThreeDime a) 23 { 24    a.x = -a.x; 25    a.y = -a.y; 26    a.z = -a.z; 27    return a; 28 }

【예제 11-8】Ex8.c 02 포인터를 사용하는 구조체 01 #include <stdio.h> 02 #include <math.h> 03 struct ThreeDime { 04    double x; 05    double y; 06    double z; 07 };         08 typedef struct ThreeDime ThreeDime; 09 double Distance1(ThreeDime* a) 10 { 11    double d; 12    d = sqrt(a->x * a->x + a->y * 13 a->y + a->z * a->z); 14     return d; 15 } 16 ThreeDime SymOri(ThreeDime* a) 17 { 18     a->x = -a->x; 19     a->y = -a->y; 20     a->z = -a->z; 21     return *a; 22 } 23 int main(void) 24 { 25       double D1; 26        ThreeDime A1, A2, A3; 27 28        printf("3차원의 점 A1의 x, y, z 점을 입력하시오.\n"); 29        scanf("%lf %lf %lf", &A1.x, &A1.y, &A1.z); 30        // D1 : A1점과 원점과의 거리 31        D1 = Distance(&A1); 32        // A1점을 원점에 대칭 시킨 점 33         A3 = SymOri(&A1); 34      35        printf("\nA1점과 원점과의 거리는 %.2lf 이다.\n\n", D1); 36        printf("A1점을 원점에 대칭 시킨 점의 x : %.2lf, y : % .2lf, z : %.2lf 이다.\n\n", A3.x, A3.y, A3.z); 37        38       return 0; 39 }

열거형 (enum) 05 열거형 (enum) 열거형 정의 : enum 열거형 태그 { 열거형 상수 리스트 }; 사용 예 : enum color {yellow, red, blue, green, magenta}; 변수 선언 enum color col = red;

【예제 11-9】Ex9.c 02 열거형의 예제 01 #include <stdio.h> 02 int main(void) 03 { 04 enum { yellow, red, blue, green } color; 05         printf("원하는 색깔을 입력하세요.\n"); 06         printf("0번 : 노란색   1번 : 빨간색 \n"); 07         printf("2번 : 파란색   3번 : 초록색 \n"); 08         scanf("%d", &color); 09 10         if(color == yellow) printf("노란색입니다\n"); 11         else if(color == red) printf("빨간색입니다\n"); 12         else if(color == blue) printf("파란색입니다\n"); 13         else if(color == green) printf("초록색입니다\n"); 14        15       return 0; 16} 표준입력 스트림