배열 장점:집합데이터를 처리. 메모리인접. 포인터에 비해 접근속도 빠르다
배열 단점: 한 타입저장. 크기가 정해있다.
배열로 객체 표현 힘듦=>보완=>구조체
구조체: 타입 정의
1)타입정의
struct 타입명{
변수들...
};
struct Student{
int num; //멤버변수
char name[10]; //멤버변수
};
2)변수선언
struct 타입명 변수명;
struct Student s1, s2;
s1.num=10;
strcpy(s1.name, "aaa");
#include <stdio.h> //타입 정의. 타입 이름:Test //구조체 안에 선언한 변수 : 멤버변수 struct Test{ char a; int b; float c; }; void main(){ struct Test t1, t2; t1.a = 'a'; t1.b = 10; t1.c = 2.34f; t2.a = 'b'; t2.b = 20; t2.c = 4.56f; printf("t1.a:%c, t1.b:%d, t1.c:%f\n", t1.a, t1.b, t1.c); printf("t2.a:%c, t2.b:%d, t2.c:%f\n", t2.a, t2.b, t2.c); } |
#include <stdio.h> #include <string.h> struct Student{ int num; char name[10]; }; void main(){ struct Student s1, s2; s1.num=12; strcpy(s1.name, "aaa"); printf("번호:"); scanf("%d", &s2.num); printf("name:"); scanf("%s", s2.name); printf("num:%d, name:%s\n", s1.num, s1.name); printf("num:%d, name:%s\n", s2.num, s2.name); } |
#include <stdio.h> #include <string.h> //타입 정의. 기본 타입으로만 객체 묘사 어려움. struct Student{ int num; char name[10]; }; void main(){ struct Student s1, s2; s1.num = 1; strcpy(s1.name, "aaa"); s2.num = 2; strcpy(s2.name, "bbb"); printf("s1.num=%d, s1.name=%s\n", s1.num, s1.name); printf("s2.num=%d, s2.name=%s\n", s2.num, s2.name); }struct Student{ int num; char name[10]; }; void main(){ struct Student s[3]; int i; for(i=0;i<3;i++){ printf("번호:"); scanf("%d", &s[i].num); printf("name:"); scanf("%s", s[i].name); } for(i=0;i<3;i++){ printf("num:%d, name:%s\n", s[i].num, s[i].name); } } |
3)구조체 포인터
#include <stdio.h> struct Test{ char a; int b; }; void main(){ struct Test t1; t1.a='x'; t1.b=200; printf("t1.a=%c, t1.b=%d\n", t1.a, t1.b); struct Test *t2; t2 = &t1; printf("t2->a=%c, t2->b=%d\n", t2->a, t2->b); t2->a = 'z'; t2->b = 300; printf("t1.a=%c, t1.b=%d\n", t1.a, t1.b); } |
댓글