이번장에서학습할내용 구조체란무엇인가? 구조체의선언, 초기화, 사용 구조체의배열 구조체와포인터 구조체와함수 공용체 열거형 typedef 구조체는복잡한내용을일목요연하여정리하는데유용하게사용됩니다. 2

Similar documents
untitled

Microsoft PowerPoint - Lesson12.pptx

Microsoft PowerPoint - chap-13.pptx

11장 포인터

14 주차구조체와공용체

Microsoft PowerPoint - ch08 - 구조체 (structure) am0845

Microsoft PowerPoint - 제13장 구조체

기초컴퓨터프로그래밍

Microsoft PowerPoint - ch08 - 구조체 (structure) am0845

슬라이드 1

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

윤성우의 열혈 TCP/IP 소켓 프로그래밍

untitled

untitled

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

11장 포인터

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

KNK_C_05_Pointers_Arrays_structures_summary_v02

; struct point p[10] = {{1, 2, {5, -3, {-3, 5, {-6, -2, {2, 2, {-3, -3, {-9, 2, {7, 8, {-6, 4, {8, -5; for (i = 0; i < 10; i++){ if (p[i].x > 0 && p[i

untitled

제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

Microsoft PowerPoint - Chapter_09.pptx

C 언어 프로그래밊 과제 풀이

Microsoft PowerPoint - chap11-포인터의활용.pptx

Microsoft PowerPoint - 제11장 포인터

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - 제11장 포인터(강의)

Microsoft PowerPoint - 07_(C_Programming)_(Korean)_Composite_Data_Types

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

10장. 구조체

Microsoft PowerPoint - chap09-1.ppt

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

PowerPoint 프레젠테이션

K&R2 Reference Manual 번역본

02장.배열과 클래스

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - chap-11.pptx

OCW_C언어 기초

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

BACK TO THE BASIC C++ 버그 헌팅: 버그를 예방하는 11가지 코딩 습관

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - chap10-함수의활용.pptx

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

Microsoft PowerPoint - Lesson2.pptx

슬라이드 1

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

11장 포인터

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - chap06-2pointer.ppt

int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \

Microsoft PowerPoint - chap12-고급기능.pptx

Lab 3. 실습문제 (Single linked list)_해답.hwp

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

중간고사

Microsoft PowerPoint - chap-06.pptx

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

PowerPoint 프레젠테이션


03장.스택.key

PowerPoint 프레젠테이션

슬라이드 1

<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7>


<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - chap04-연산자.pptx

4. 1 포인터와 1 차원배열 4. 2 포인터와 2 차원배열 4. 3 포인터배열 4. 4 포인터와문자그리고포인터와문자열

ABC 9장


<C7E0BAB9C0AFBCBA5F F30365F322E696E6464>

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

Microsoft PowerPoint - chap-03.pptx

C 프로그래밊 개요

Microsoft PowerPoint - Chapter8.pptx

C 언어의구성요소인상수, 변수, 입 출력함수에 대하여학습

Microsoft PowerPoint - chap06-1Array.ppt

제 15 장전처리및비트연산 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

Microsoft PowerPoint - chap09.ppt

PowerPoint 프레젠테이션

Microsoft PowerPoint - 08-C-App-19-Quick-Preprocessor

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - Lesson6.pptx

Hanyang Volunteer Corps volunteer image

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

본 강의에 들어가기 전

Microsoft PowerPoint - [2009] 02.pptx

chap10.PDF

歯9장.PDF

Microsoft PowerPoint - ch07 - 포인터 pm0415


Transcription:

제 13 장구조체 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

이번장에서학습할내용 구조체란무엇인가? 구조체의선언, 초기화, 사용 구조체의배열 구조체와포인터 구조체와함수 공용체 열거형 typedef 구조체는복잡한내용을일목요연하여정리하는데유용하게사용됩니다. 2

구조체란? 자료형 기본자료형 : char, int, float, double 등 파생자료형 : 배열, 열거형, 구조체, 공용체 구조체 : 서로다른자료형을하나로묶는구조 구조체 vs 배열 3

구조체의선언 구조체선언형식 struct 구조체 _ 태그 _ 이름 자료형멤버 _ 이름 ; 자료형멤버 _ 이름 ;... ; ( 예 ) 학생에대한데이터 태그 (tag) struct student int number; // 학번 char name[10]; // 이름 double height; // 키 ; 구조체선언은변수선언은아님 멤버 (member) 구조체를정의하는것은와플이나붕어빵을만드는틀을정의하는것과같다. 와플이나붕어빵을실제로만만들릭위해서는구조체변수를선언하여야한다. 구조체 구조체변수 4

구조체선언의예 // x값과 y값으로이루어지는화면의좌표 struct point int x; // x 좌표 int y; // y 좌표 ; // 복소수 struct complex double real; double imag; ; // 날짜 struct date int month; int day; int year; ; // 실수부 // 허수부 // 사각형 struct rect int x; int y; int width; int height; ; // 직원 struct employee char name[20]; int age; int gender; int salary; ; // 이름 // 나이 // 성별 // 월급 5

구조체변수선언 구조체정의와구조체변수선언은다르다. struct student int number; char name[20]; double height; ; int main(void) struct student s1;... 구조체정의 구조체변수선언 6

구조체의초기화 중괄호를이용하여초기값을나열한다. struct student int number; char name[10]; double height; ; struct student s1 = 24, "Kim", 178.9 ; 7

구조체멤버참조 구조체멤버를참조하려면다음과같이. 연산자를사용한다. s1.number = 26; strcpy(s1.name, "Kim"); s1.height = 183.2; // 정수멤버 // 문자열멤버 // 실수멤버.. 기호는구조체에서멤버를참조할때사용하는연산자입니다. 8

구조체를멤버로가지는구조체 struct date int year; int month; int day; ; // 구조체선언 struct student // 구조체선언 int number; char name[10]; struct date dob; // 구조체안에구조체포함 double height; ; struct student s1; // 구조체변수선언 s1.dob.year = 1983; s1.dob.month = 03; s1.dob.day = 29; // 멤버참조 9

예제 #1 #include <stdio.h> #include <stdlib.h> struct student int number; char name[10]; double height; ; 구조체선언 int main(void) struct student s; 구조체멤버참조 s.number = 20070001; strcpy(s.name," 홍길동 "); s.height = 180.2; printf(" 학번 : %d\n", s.number); printf(" 이름 : %s\n", s.name); printf(" 신장 : %f\n", s.height); return 0; 학번 : 20070001 이름 : 홍길동신장 : 180.200000 10

예제 #2 struct student int number; char name[10]; double height; ; int main(void) struct student s; 학번을입력하시오 : 20070001 이름을입력하시오 : 홍길동신장을입력하시오 ( 실수 ): 180.2 학번 : 20070001 이름 : 홍길동신장 : 180.200000 printf(" 학번을입력하시오 : "); scanf("%d", &s.number); printf(" 이름을입력하시오 : "); scanf("%s", s.name); printf(" 신장을입력하시오 ( 실수 ): "); scanf("%lf", &s.height); printf(" 학번 : %d\n", s.number); printf(" 이름 : %s\n", s.name); printf(" 신장 : %f\n", s.height); return 0; 11

예제 #3 #include <math.h> struct point int x; int y; ; p2 (x,y) int main(void) struct point p1, p2; int xdiff, ydiff; double dist; printf(" 점의좌표를입력하시오 (x y): "); scanf("%d %d", &p1.x, &p1.y); printf(" 점의좌표를입력하시오 (x y): "); scanf("%d %d", &p2.x, &p2.y); p1 (x,y) xdiff = p1.x - p2.x; ydiff = p1.y - p2.y; dist = sqrt(xdiff * xdiff + ydiff * ydiff); printf(" 두점사이의거리는 %f 입니다.\n", dist); return 0; 점의좌표를입력하시오 (x y): 10 10 점의좌표를입력하시오 (x y): 20 20 두점사이의거리는 14.142136 입니다. 12

예제 #4 struct point int x; int y; ; p1(x,y) struct rect struct point p1; struct point p2; ; p2(x,y) int main(void) struct rect r; int w, h, area, peri; printf(" 왼쪽상단의좌표를입력하시오 : "); scanf("%d %d", &r.p1.x, &r.p1.y); printf(" 오른쪽상단의좌표를입력하시오 : "); scanf("%d %d", &r.p2.x, &r.p2.y); 왼쪽상단의좌표를입력하시오 :11 오른쪽상단의좌표를입력하시오 :66 면적은 25 이고둘레는 20 입니다. w = r.p2.x - r.p1.x; h = r.p2.x - r.p1.x; area = w * h; peri = 2 * w + 2 * h; printf(" 면적은 %d 이고둘레는 %d 입니다.\n", area, peri); return 0; 13

구조체변수의대입과비교 같은구조체변수끼리대입은가능하지만비교는불가능하다. struct point int x; int y; ; int main(void) struct point p1 = 10, 20; struct point p2 = 30, 40; p2 = p1; // 대입가능 if( p1==p2) // 비교 -> 컴파일오류!! printf("p1 와 p2 이같습니다.") if( (p1.x == p2.x) && (p1.y == p2.y) ) printf("p1와 p2이같습니다.") // 올바른비교 14

구조체배열 구조체배열의선언 struct student int number; char name[20]; double height; ; int main(void) struct student list[100]; // 구조체의배열선언 list[2].number = 27; strcpy(list[2].name, " 홍길동 "); list[2].height = 178.0; 구조체배열의초기화 struct student list[3] = 1, "Park", 172.8, 2, "Kim", 179.2, 3, "Lee", 180.3 ; 15

구조체배열예제 #define SIZE 3 struct student int number; char name[20]; double height; ; int main(void) struct student list[size]; int i; for(i = 0; i < SIZE; i++) printf(" 학번을입력하시오 : "); scanf("%d", &list[i].number); printf(" 이름을입력하시오 : "); scanf("%s", list[i].name); printf(" 신장을입력하시오 ( 실수 ): "); scanf("%lf", &list[i].height); 학번을입력하시오 : 20070001 이름을입력하시오 : 홍길동신장을입력하시오 ( 실수 ): 180.2 학번을입력하시오 : 20070002 이름을입력하시오 : 김유신신장을입력하시오 ( 실수 ): 178.3 학번을입력하시오 : 20070003 이름을입력하시오 : 이성계신장을입력하시오 ( 실수 ): 176.3 학번 : 20070001, 이름 : 홍길동, 신장 : 180.200000 학번 : 20070002, 이름 : 김유신, 신장 : 178.300000 학번 : 20070003, 이름 : 이성계, 신장 : 176.300000 for(i = 0; i< SIZE; i++) printf(" 학번 : %d, 이름 : %s, 신장 : %f\n", list[i].number, list[i].name, list[i].height); return 0; 16

구조체와포인터 구조체를가리키는포인터 struct student *p; struct student s = 20070001, " 홍길동 ", 180.2 ; struct student *p; p = &s; printf(" 학번 =%d 이름 =%s 키 =%f \n", s.number, s.name, s.height); printf(" 학번 =%d 이름 =%s 키 =%f \n", (*p).number,(*p).name,(*p).height); 17

-> 연산자 -> 연산자는구조체포인터로구조체멤버를참조할때사용 struct student *p; struct student s = 20070001, " 홍길동 ", 180.2 ; struct student *p; p = &s; printf(" 학번 =%d 이름 =%s 키 =%f \n", s.number, s.name, s.height); printf(" 학번 =%d 이름 =%s 키 =%f \n", (*p).number,(*p).name,(*p).height); printf(" 학번 =%d 이름 =%s 키 =%f \n", p->number, p->name, p->height); (*p).number p 가가리키는구조체변수 p 가가리키는구조체변수의멤버 number == p->number p 가가리키는구조체변수의멤버 number 18

예제 // 포인터를통한구조체참조 #include <stdio.h> struct student int number; char name[20]; double height; ; int main(void) struct student s = 20070001, " 홍길동 ", 180.2 ; struct student *p; p = &s; printf(" 학번 =%d 이름 =%s 키 =%f \n", s.number, s.name, s.height); printf(" 학번 =%d 이름 =%s 키 =%f \n", (*p).number,(*p).name,(*p).height); printf(" 학번 =%d 이름 =%s 키 =%f \n", p->number, p->name, p->height); return 0; 학번 =20070001 이름 = 홍길동키 =180.200000 학번 =20070001 이름 = 홍길동키 =180.200000 학번 =20070001 이름 = 홍길동키 =180.200000 19

포인터를멤버로가지는구조체 struct date int month; int day; int year; ; 학번 : 20070001 이름 :Kim 신장 : 180.200000 생년월일 : 1980 년 3 월 20 일 struct student int number; char name[20]; double height; struct date *dob; ; int main(void) struct date d = 3, 20, 1980 ; struct student s = 20070001, "Kim", 180.2 ; s.dob = &d; printf(" 학번 : %d\n", s.number); printf(" 이름 : %s\n", s.name); printf(" 신장 : %f\n", s.height); printf(" 생년월일 : %d년 %d월 %d일\n", s.dob->year, s.dob->month, s.dob->day); return 0; 20

struct student int number; char name[10]; double height; struct student *next; ; 자체참조구조체 int main(void) struct student s1 = 30, "Kim", 167.2, NULL ; struct student s2 = 31, "Park", 179.1, NULL ; struct student *first = NULL; struct student *current = NULL; first = &s1; s1.next = &s2; s2.next = NULL; current = first; while( current!= NULL ) printf(" 학생의번호 =%d 이름 =%s, 키 =%f\n", current->number, current->name, current->height); current = current->next; 학생의번호 =30 이름 =Kim, 키 =167.200000 학생의번호 =31 이름 =Park, 키 =179.100000 21

구조체와함수 구조체를함수의인수로전달하는경우 구조체의복사본이함수로전달되게된다. 만약구조체의크기가크면그만큼시간과메모리가소요된다. int equal(struct student s1, struct student s2) if( strcmp(s1.name, s2.name) == 0 ) return 1; else return 0; 구조체의포인터를함수의인수로전달하는경우 시간과공간을절약할수있다. int equal(struct student const *p1, struct student const *p2) if( strcmp(p1->name, p2->name) == 0 ) return 1; else return 0; 22

구조체를반환하는경우 복사본이반환된다. struct student make_student(void) struct student s; printf(" 나이 : ); scanf("%d", &s.age); printf(" 이름 : ); scanf("%s", s.name); printf(" 키 : ); scanf("%f", &s.height); 구조체 s 의복사본이반환된다. return s; 23

#include <stdio.h> 예제 struct vector float x; float y; ; struct vector get_vector_sum(struct vector a, struct vector b); int main(void) struct vector a = 2.0, 3.0 ; struct vector b = 5.0, 6.0 ; struct vector sum; sum = get_vector_sum(a, b); printf(" 벡터의합은 (%f, %f) 입니다.\n", sum.x, sum.y); a + b a b return 0; struct vector get_vector_sum(struct vector a, struct vector b) struct vector result; result.x = a.x + b.x; result.y = a.y + b.y; return result; 벡터의합은 (7.000000, 9.000000) 입니다. 24

예제 #include <stdio.h> struct point int x; int y; ; // 기울기와 y 절편을계산 int get_line_parameter(struct point p1, struct point p2, float *slope, float *yintercept) if( p1.x == p2.x ) return (-1); else *slope = (float)(p2.y - p1.y)/(float)(p2.x - p1.x); *yintercept = p1.y - (*slope) * p1.x; return (0); int main(void) struct point pt1 = 3, 3, pt2 = 6, 6; float s,y; if( get_line_parameter(pt1, pt2, &s, &y) == -1 ) printf(" 오류 : 두점의 x 좌표값이동일합니다.\n"); else printf(" 기울기는 %f, y 절편은 %f\n", s, y); return 0; 기울기는 1.000000, y절편은 0.000000 25

열거형 열거형 (enumeration) 이란변수가가질수있는값들을미리열거해놓은자료형 ( 예 ) 요일을저장하고있는변수는 일요일, 월요일, 화요일, 수요일, 목요일, 금요일, 토요일 중의하나의값만가질수있다. 열거형은 enum이라는키워드를사용하여만들어진다. enum 태그 _ 이름 값 1, 값 2,... ; enum days1 MON, TUE, WED, THU, FRI, SAT, SUN ; enum days2 MON=1, TUE, WED, THU, FRI, SAT, SUN ; enum days3 MON=1, TUE=2, WED=3, THU=4, FRI=5, SAT=6, SUN=7 ; enum days4 MON, TUE=2, WED=3, THU, FRI, SAT, SUN ; enum days1 d; d=wed; 26

열거형의예 enum days SUN, MON, TUE, WED, THU, FRI, SAT ; enum colors white, red, blue, green, black ; enum boolean 0, 1 ; enum months JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC ; enum major COMMUNICATION, COMPUTER, ELECTRIC, ELECTRONICS ; enum component MAIN_BOARD, CPU, GRAPHIC_CARD, DISK, MEMORY ; enum levels low = 1, medium, high ; enum CarOptions SunRoof = 0x01, Spoiler = 0x02, FogLights = 0x04, TintedWindows = 0x08, 27

열거형과다른방법과의비교 정수사용기호상수열거형 switch(code) case 1: printf("lcd TV\n"); break; case 2: printf("pdp TV\n"); break; 컴퓨터는알기쉬우나사람은기억하기어렵다. #define LCD 1 #define PDP 2 switch(code) case LCD: printf("lcd TV\n"); break; case PDP: printf("pdp TV\n"); break; 기호상수를작성할때오류를저지를수있다. enum tvtype LCD, PDP ; enum tvtype code; switch(code) case LCD: printf("lcd TV\n"); break; case PDP: printf("pdp TV\n"); break; 컴파일러가중복이일어나지않도록체크한다. 28

예제 // 열거형 #include <stdio.h> enum days MON, TUE, WED, THU, FRI, SAT, SUN ; char *days_name[] = "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday" ; int main(void) enum days d; for(d=mon; d<=sun; d++) printf("%d 번째요일의이름은 %s 입니다 \n", d, days_name[d]); 0번째요일의이름은 monday입니다 1번째요일의이름은 tuesday입니다 2번째요일의이름은 wednesday입니다 3번째요일의이름은 thursday입니다 4번째요일의이름은 friday입니다 5번째요일의이름은 saturday입니다 6번째요일의이름은 sunday입니다 29

#include <stdio.h> enum tvtype tube, lcd, plasma, projection ; 예제 int main(void) enum tvtype type; TV 종류코드를입력하시오 :3 프로젝션 TV 를선택하셨습니다. printf("tv 종류코드를입력하시오 : "); scanf("%d", &type); switch(type) case tube: printf(" 브라운관 TV 를선택하셨습니다.\n"); break; case lcd: printf("lcd TV 를선택하셨습니다.\n"); break; case plasma: printf("pdp TV 를선택하셨습니다.\n"); break; case projection: printf(" 프로젝션 TV 를선택하셨습니다.\n"); break; default: printf(" 다시선택하여주십시오.\n"); break; return 0; 30

typedef typedef 은새로운자료형 (type) 을정의 (define) typedef old_type new_type; C 의기본자료형을확장시키는역할 새로운자료형을정의 typedef unsigned char BYTE; 기존의자료형 새로운자료형 point typedef 기본자료형 int float 31

typedef 의예 기본자료형 int short unsigned int unsigned short unsigned char char typedef int INT32; typedef unsigned int UINT32; INT32 i; // int i; 와같다. UINT32 k; // unsigned int k; 와같다. typedef struct point int x; int y; POINT; POINT p,q; 재정의된자료형 INT32 INT16 UINT32 UINT16 UCHAR, BYTE CHAR typedef struct complex double real; double imag; COMPLEX; COMPLEX x, y; typedef enum FALSE, TRUE BOOL; BOOL condition; // enum FALSE, TRUE condition; typedef char * STRING_PTR; STRING_PTR p; // char *p; 32

typedef 과 #define 비교 이식성을높여준다. 코드를컴퓨터하드웨어에독립적으로만들수있다 ( 예 ) int형은 2바이트이기도하고 4바이트, int형대신에 typedef을이용한 INT32나 INT16을사용하게되면확실하게 2바이트인지 4바이트인지를지정할수있다. #define을이용해도 typedef과비슷한효과를낼수있다. 즉다음과같이 INT32를정의할수있다. #define UINT32 unsigned int typedef float VECTOR[2];// #define으로는불가능하다. 문서화의역할도한다. typedef 을사용하게되면주석을붙이는것과같은효과 33

예제 #include <stdio.h> typedef struct point int x; int y; POINT; POINT translate(point p, POINT delta); int main(void) POINT p = 2, 3 ; POINT delta = 10, 10 ; POINT result; result = translate(p, delta); printf(" 새로운점의좌표는 (%d, %d) 입니다.\n", result.x, result.y); return 0; POINT translate(point p, POINT delta) POINT new_p; new_p.x = p.x + delta.x; new_p.y = p.y + delta.y; return new_p; 새로운점의좌표는 (12, 13) 입니다. 34

Q & A 35