Download presentation
Presentation is loading. Please wait.
Published byÏἈχαϊκός Δελή Modified 5년 전
1
3b장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
함수의 인자로 구조체 사용하기 열거형 한빛미디어(주)
2
구조체 정의 구조체 정의
3
구조체 변수의 선언 02 구조체 변수의 선언 students 구조체 정의 → 새로운 자료형(타입)이 됨
struct students { char name[20]; char address[30]; char tel[15]; int grade int age } ; int main( ) { struct students st1; return 0; } students 구조체 정의 → 새로운 자료형(타입)이 됨 students 구조체 선언
4
구조체 포인터 선언 및 초기 03 구조체 포인터 선언 및 초기 struct ThreeDime { double x;
double y; double z; }; typedef struct ThreeDime ThreeDime; ThreeDime A1= { 3, 1, 8}; // struct ThreeDime A1= { 3, 1, 8} 와 동일 ThreeDime *p = &A1; // 포인터 선언 및 초기화
5
【예제 11-1】Ex3b-1.c 02 구조체 초기화 예제 $ ./a.out NAME SEX AGE John M 25
#include <stdio.h> #include <string.h> struct list { char name[5]; char sex; int age; }; int main(void) { struct list st1 = { "John", 'M', 25}; struct list st2; strcpy(st2.name, "Mary"); st2.sex = 'F'; st2.age = 24; printf("%-5s %3s %3s\n", "NAME", "SEX", "AGE"); printf("%-5s %3c %3d\n", st1.name, st1.sex, st1.age); printf("%-5s %3c %3d\n", st2.name, st2.sex, st2.age); return 0; } $ ./a.out NAME SEX AGE John M 25 Mary F 24
6
【예제 11-2】Ex3b-2.c 02 구조체의 크기 #include <stdio.h>
#include <string.h> struct list { char name[5]; char sex; int age; }; int main(void) { struct list st1 = { "John", 'M', 25}; struct list *p = &st1; printf("sizeof(struct list) = %d\n", sizeof(struct list)); printf("sizeof(st1) = %d\n", sizeof(st1)); printf("sizeof(p) = %d\n", sizeof(p)); return 0; } $ ./a.out sizeof(struct list) = 12 sizeof(st1) = 12 sizeof(p) = 4
7
구조체 포인터를 통한 구조체 멤버 접근 04 구조체 포인터를 통한 구조체 멤버 접근 구조체 포인터 -> 멤버명
ex ) p->x p->y p->z
8
【예제 11-6】Ex3b-6.c 02 구조체에 대한 포인터 #include <stdio.h>
struct ThreeDim { double x; double y; double z; }; typedef struct ThreeDim ThreeDim; int main(void) ThreeDim a = {3, 1, 8}; printf("a = (%lf, %lf, %lf)\n", a.x, a.y, a.z); ThreeDim *p = &a; printf("a = (%lf, %lf, %lf)\n", p->x, p->y, p->z); } $ ./a.out a = ( , , )
9
【예제 11-7】Ex3b-7.c 02 구조체를 함수에게 넘겨주기 #include <stdio.h>
#include <math.h> struct ThreeDim { double x; double y; double z; }; typedef struct ThreeDim ThreeDim; double distance(ThreeDim p, ThreeDim q) double d; d = sqrt( (p.x - q.x)*(p.x - q.x) + (p.y - q.y)*(p.y - q.y) + (p.z - q.z)*(p.z - q.z) ); return d; } int main(void) { ThreeDim a = {3, 1, 8}; ThreeDim b = {-4, 2, 1}; printf("d = %lf\n", distance(a, b) ); } $ gcc -lm Ex3b-7.c $ ./a.out d =
10
【예제 11-7】Ex3b-8.c 02 구조체 포인터를 함수에게 넘겨주기 #include <stdio.h>
#include <math.h> struct ThreeDim { double x; double y; double z; }; typedef struct ThreeDim ThreeDim; double distance( ) double d; return d; } int main(void) { ThreeDim a = {3, 1, 8}; ThreeDim b = {-4, 2, 1}; printf("d = %lf\n", ); } $ gcc -lm Ex3b-8.c $ ./a.out d =
11
【예제 11-7】Ex3b-9.c 02 구조체를 함수에게 넘겨주기 #include <stdio.h>
#include <math.h> struct ThreeDim { double x; double y; double z; }; typedef struct ThreeDim ThreeDim; void middle(ThreeDim *p, ThreeDim *q, ThreeDim *m) m->x = (p->x + q->x) / 2; m->y = (p->y + q->y) / 2; m->z = (p->z + q->z) / 2; } int main(void) { ThreeDim a = {3, 1, 8}; ThreeDim b = {-4, 2, 1}; ThreeDim c; middle(&a, &b, &c); printf("c = (%lf, %lf, %lf)\n", c.x, c.y, c.z); } $ ./a.out c = ( , , )
Similar presentations