반응형
[C/C++] struct와 typedef struct 차이
이번 시간에는 대표적인 구조체 선언 방식인 typedef struct와 struct의 차이에 대해 알아보자.
반응형
※ 한줄요약
- struct
① 별명없이 쓰는 구조체 (별명은 지을수 있지만, 기능이 없다)
② 선언시 'struct+구조체이름'을 적어줘야 함
- typedef struct
① 별명을 지을 수 있는 구조체
② 선언시 '별명'만 적어주면 됨
(+) 구조체 이름과 별명은 같은 명칭으로 쓸 수 없기 때문에 관례상 구조체이름은 _(언더바)를 붙인다.
(예시)
typedef struct _Person { // 구조체 이름은 _Person
char name[20]; // 구조체 멤버 1
int age; // 구조체 멤버 2
char address[100]; // 구조체 멤버 3
} Person; // typedef를 사용하여 구조체 별칭을 Person으로 정의
반응형
struct와 typedef struct 사용 예시
<main.h>
#include <stdio.h>
#include <iostream>
using namespace std;
struct _dinner { //struct 정의부
int banana;
int apple;
int orange;
} dinner; //별명을 명기할수는 있으나 기능은 없음
typedef struct _lunch { //typedef 정의부
int banana;
int apple;
int orange;
} lunch; //typedef의 별명
<main.cpp>
// C++ 예시
#include "main.h"
int main()
{
struct _dinner dinner; //선언시 'struct 구조체이름'으로 선언
lunch lunch; //선언시 '별명'으로 선언
dinner.apple = 0;
lunch.apple = 1;
cout<<dinner.apple<<endl;
cout<<lunch.apple<<endl;
return 0;
}
main문에서 구조체를 선언할 때 struct _dinner도 너무 길다고 생각되면 typedef를 사용하면 된다.
반응형
반응형
'IT > C C++' 카테고리의 다른 글
[C/C++] Break/Return/Continue 차이 (0) | 2023.03.30 |
---|---|
[C/C++] #Pragma pack(1) 의미 (0) | 2022.12.09 |
[vscode] 액션을 선택해 주십시오. 액세스 거부 해결 방법 (0) | 2022.06.24 |
[C/C++] 자료형의 크기 및 표현 범위 (0) | 2022.06.09 |
[C/C++] 문자열 함수 정리 (0) | 2022.05.20 |