https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=ruvendix&logNo=220904838279
에서 일부 내용을 참고하였음을 미리 알립니다.
앞부분의 설명에 대해서 더 자세한 설명을 읽고 싶으시다면 해당 게시글을 참고하시기 바랍니다.
struct는 형식을 지정해주고 typedef는 형식을 정의해준다.
struct로 구조체를 만들면 하나의 형식을 만드는 것과 비슷한데 정확히 말하면 형식을 지정해주는 것이고 typedef은 이를 재정의해주는 것이다.
typedef 사용법
typedef unsigned int MyUNIT;
이렇게 정의하면 앞으로
MyUNIT x;
라고 쓰면 x는 unsigned int형으로 정의된다.
이를 보면 이는 치환이라고 생각할 수도 있는데 단순치환은 아님을 다음 예시에서 알 수 있다.
typedef struct // 가독성을 위해 _wallet 을 붙일 수 있는데 이 때는 띄워야 한다.
{
int coinNum;
int billNum;
}Wallet;
단순히 typedef 뒤의 내용을 Wallet으로 치환하는 거면
Wallet을 적을 때마다 struct가 정의되게 된다.
일반적인 자료형의 경우에는 치환처럼 생각하면 되나
구조체의 경우는 좀 특수하게 작용한다고 생각하면 편할 듯하다.
typedef 팁
#include <stdio.h>
typedef struct Food FOOD;
struct Food
{
char Name[10];
int iPrice;
FOOD* pointer;
};
int main()
{
FOOD Food = { "짬뽕 라면", 4000}; // 구조체의 일부만 초기화, 이는 배열에서도 사용가능하다.
Food.pointer = &Food;
printf("음식 이름 : %s\n", Food.Name);
printf("음식 가격 : %d원\n", Food.iPrice);
printf("구조체 주소 : %p\n", Food.pointer);
return 0;
}
코드의 실행 결과
이렇게 typedef은 변수가 선언되기 전에도 사용가능하다.
다른 예시