Coding & Programming/C, C++

[C/C++] 구조체 선언과 typedef 키워드 사용하기(structure declaration & typedef keyword examples)

mainCodes 2021. 3. 3. 07:30

[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, 0sizeof(msg_header1));
    memset(&msg_header2, 0sizeof(msg_header2));
    memset(&msg_header3, 0sizeof(msg_header3));
    memset(msg_header4, 0sizeof(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 였습니다. 꾸벅. (•̀ᴗ•́)و