포스트

[ C++ ] 구조체

구조체



  • 여러 개의 변수를 묶어 하나의 객체를 표현하고자 할 때, 구조체 사용 가능

  • 캐릭터, 학생, 좌표 등 다양한 객체를 모두 프로그래밍 언어를 이용해 표현 가능


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
struct Student {

char studentId[10];

char name[10];

int grade;

char major[100];

};

int main(void) {

//구조체 변수
struct Student s;

strcpy(s.studentId, "201413051");

strcpy(s.name, "권혁수");

s.grade= 4;

strcpy(s.major, "미디어학과");

printf("학번: %s\n", s.studentId);

printf("이름: %s\n", s.name);

printf("학년: %d\n", s.grade);

printf("학과: %s\n", s.major);

system("pause");

return 0;

}


  • 하나의 구조체 변수만 사용하는 경우, 정의와 동시에 선언 가능(이 경우 변수는 전역변수로 사용)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
struct Student {

char studentId[10];

char name[10];

int grade;

char major[100];

}s;

int main(void) {

strcpy(s.studentId, "201413051");

strcpy(s.name, "권혁수");

s.grade= 4;

strcpy(s.major, "미디어학과");

printf("학번: %s\n", s.studentId);

printf("이름: %s\n", s.name);

printf("학년: %d\n", s.grade);

printf("학과: %s\n", s.major);

system("pause");

return 0;

}




  • 구조체 변수를 한번에 초기화 가능
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
struct Student {

char studentId[10];

char name[10];

int grade;

char major[100];

}s = { "201413051","권혁수",4,"미디어학과" };

int main(void) {

printf("학번: %s\n", s.studentId);

printf("이름: %s\n", s.name);

printf("학년: %d\n", s.grade);

printf("학과: %s\n", s.major);

system("pause");

return 0;

}


  • Typedef 키워드를 이용 시, 임의의 자료형을 만들 수 있어 선언 단축
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
typedef struct Student {

char studentId[10];

char name[10];

int grade;

char major[51];

}Student;

int main(void) {

Student s = { "201413051","권혁수",4,"미디어학과" };

printf("학번: %s\n", s.studentId);

printf("이름: %s\n", s.name);

printf("학년: %d\n", s.grade);

printf("학과: %s\n", s.major);

system("pause");

return 0;

}



  • 최근 익병 구조체 개념이 등장, 구조체 이름 부분을 비워 사용 가능
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
typedef struct {

char studentId[10];

char name[10];

int grade;

char major[51];

}Student;

int main(void) {

Student s = { "201413051","권혁수",4,"미디어학과" };

printf("학번: %s\n", s.studentId);

printf("이름: %s\n", s.name);

printf("학년: %d\n", s.grade);

printf("학과: %s\n", s.major);

system("pause");

return 0;

}



  • 구조체가 포인터 변수로 사용되는 경우, 내부 변수에 접근할 때 화살표 (->)를 사용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

typedef struct{

char studentId[10];

char name[10];

int grade;

char major[51];

}Student;

int main(void) {

Student *s = malloc(sizeof(Student)) ;

strcpy(s->studentId, "201413051");

strcpy(s->name, "권혁수");

s->grade = 4;

strcpy(s->major, "미디어학과");

printf("학번: %s\n", s->studentId);

printf("이름: %s\n", s->name);

printf("학년: %d\n", s->grade);

printf("학과: %s\n", s->major);

system("pause");

return 0;

}





이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.