자료형 기본자료형 : char, int, float, double 등 파생자료형 : 배열, 열거형, 구조체, 공용체 vs
struct 구조체 _ 태그 _ 이름 자료형멤버 _ 이름 ; 자료형멤버 _ 이름 ;... ; struct student int number; // char name[10]; // double height; // ;
// 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; // 이름 // 나이 // 성별 // 월급
struct student int number; char name[20]; double height; ; int main(void) struct student s1;...
struct student int number; char name[10]; double height; ; struct student s1 = 24, "Kim", 178.9 ;
s1.number = 26; strcpy(s1.name, "Kim"); s1.height = 183.2; // // //.
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; //
#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
struct student : 20070001 int number; : char name[10]; (): 180.2 double height; : 20070001 ; : : 180.200000 int main(void) struct student s; 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;
#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.
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 : 6 6 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;
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이같습니다.")
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 ;
#define SIZE 3 : 20070001 : struct student (): 180.2 int number; : 20070002 char name[20]; : double height; (): 178.3 ; 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); : 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;
struct student *p; struct student s = 20070001, " 홍길동 ", 180.2 ; struct student *p; p = &s; pintf(" printf(" 학번 =%d 이름 =%s 키 =%f \n", snumb s.number, sn s.name, sh s.height); ht); printf(" 학번 =%d 이름 =%s 키 =%f \n", (*p).number,(*p).name,(*p).height);
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
// #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); h 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
struct date int month; int day; int year; ; struct student int number; char name[20]; double height; struct date *dob; ; int main(void) struct t date d = 3, 20, 1980 ; struct student s = 20070001, "Kim", 180.2 ; : 20070001 : Kim : 180.200000 : 1980 3 20 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;
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
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, p, struct student const *p2) if( strcmp(p1->name, p2->name) == 0 ) return 1; else return 0;
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;
#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).
#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
union example char c; // int i; // ;
#include <stdio.h> union example int i; char c; ; int main(void) union example v;. char. v.c = 'A'; printf("v v.c:%c v.i:%i\n i:%i\n", vc v.c, vi v.i ); v.i = 10000; printf("v.c:%c v.i:%i\n", v.c, v.i); int. v.c:a v.i:65 v.c: v.i:10000
#include <stdio.h> union ip_address unsigned long laddr; unsigned char saddr[4]; ; int main(void) union ip_address addr; addr.saddr[0] = 1; addr.saddr[1] [] = 0; addr.saddr[2] = 0; addr.saddr[3] = 127; printf("%x\n", addr.laddr); return 0; 7f000001
#include <stdio.h> #define STU_NUMBER 1 #define REG_NUMBER 2 struct student int type; union int stu_number; // char reg_number[15]; id; char name[20]; ; void print(struct student s) switch(s.type) // case STU_NUMBER: printf(": %d\n", s.id.stu_number); printf(": %s\n", s.name); break case REG_NUMBER: printf(": %d\n", s.id.reg_number); printf(": %s\n", s.name); break default: printf("\n"); break
int main(void) struct student s1, s2; s1.type = STU_NUMBER; s1.id.stu_number = 20070001; strcpy(s1.name, " "); s2.type = REG_NUMBER; strcpy(s2.id.reg_number, "860101-1058031"); strcpy(s2.name, " "); print(s1); print(s2); return 0; : 20070001 : : 1244868 :
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;
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,
switch(code) case 1: printf("lcd TV\n"); break; case 2: printf("pdp TV\n"); break;. #define LCD 1 #define PDP 2 enum tvtype LCD, PDP ; enum tvtype code; switch(code) case LCD: printf("lcd TV\n"); switch(code) case LCD: printf("lcd TV\n"); break; break; case PDP: case PDP: printf("pdp TV\n"); printf("pdp TV\n"); break; break;..
// #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
#include <stdio.h> enum tvtype tube, lcd, plasma, projection ; int main(void) id) enum tvtype type; TV : 3 TV. printf("tv : "); scanf("%d", &type); switch(type) case tube: printf(" TV.\n \n"); break; return 0; case lcd: printf("lcd TV.\n"); break; case plasma: printf("pdp TV.\n"); break; case projection: printf(" TV.\n"); break; default: printf(".\n"); break;
typedef old_type new_type; 새로운자료형을정의 typedef unsigned char BYTE; 기존의자료형 새로운자료형 point typedef 기본자료형 int float
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;
#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).