[ 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 라이센스를 따릅니다.