[C/C++] 구조체 선언과 typedef 키워드 사용하기(structure declaration & typedef keyword examples)
안녕하세요 JollyTree (•̀ᴗ•́)و 입니다.
C/C++ 언어를 사용하다 보면 구조체(Struct)를 정말 많이 사용하게 되는 것 같습니다. 아래 예제는 일반적인 구조체 선언과 typedef 키워드를 이용한 구조체 선언에 대한 예제로 구조체 변수 선언, 구조체 초기화, 구조체 복사에 대한 예제를 포함하고 있습니다. typedef 키워드는 구조체 뿐만 아니라 C/C++언어에서 사용자가 자료형의 이름(별칭)을 정의할 때 사용됩니다.
typedef 키워드 사용 예:
typedef unsigned int UINT; //UINT 별칭 정의
typedef void (*pointer_func)(int); //function pointer 정의
예제(Example):
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
//일반적인 구조체 선언
struct message_header1 {
int data_len;
char message_type;
} ;
//typedef 키워드를 이용한 구조체 선언
typedef struct {
int data_len;
char message_type;
} message_header2;
typedef struct _message_header3 {
int data_len;
char message_type;
} message_header3;
int main()
{
//구조체 변수 선언
struct message_header1 msg_header1;
message_header2 msg_header2;
message_header3 msg_header3;
message_header3* msg_header4 = NULL;
msg_header1.data_len = 1;
msg_header1.message_type = 0x01;
printf("%d 0x%x\n", msg_header1.data_len, msg_header1.message_type);
msg_header2.data_len = 2;
msg_header2.message_type = 0x02;
printf("%d 0x%x\n", msg_header2.data_len, msg_header2.message_type);
msg_header3.data_len = 3;
msg_header3.message_type = 0x03;
printf("%d 0x%x\n", msg_header3.data_len, msg_header3.message_type);
msg_header4 = (message_header3*)calloc(sizeof(message_header3), 1);
msg_header4->data_len = 4;
msg_header4->message_type = 0x04;
printf("%d 0x%x\n\n", msg_header4->data_len, msg_header4->message_type);
//구조체 초기화
memset(&msg_header1, 0, sizeof(msg_header1));
memset(&msg_header2, 0, sizeof(msg_header2));
memset(&msg_header3, 0, sizeof(msg_header3));
memset(msg_header4, 0, sizeof(message_header3));
printf("%d 0x%x\n", msg_header1.data_len, msg_header1.message_type);
printf("%d 0x%x\n", msg_header2.data_len, msg_header2.message_type);
printf("%d 0x%x\n", msg_header3.data_len, msg_header3.message_type);
printf("%d 0x%x\n\n", msg_header4->data_len, msg_header4->message_type);
msg_header1.data_len = 1;
msg_header1.message_type = 0x01;
printf("%d 0x%x\n", msg_header1.data_len, msg_header1.message_type);
//구조체 복사
memcpy(&msg_header2, &msg_header1, sizeof(msg_header1));
printf("%d 0x%x\n", msg_header2.data_len, msg_header2.message_type);
memcpy(msg_header4, &msg_header1, sizeof(msg_header1));
printf("%d 0x%x\n", msg_header4->data_len, msg_header4->message_type);
return 0;
}
|
cs |
실행결과(Output):
이상, JollyTree 였습니다. 꾸벅. (•̀ᴗ•́)و