unit. 58 자료형 변환하기
, 신 지민님이 작성p.780에 있는 참고 'typedef로 구조체 포인터 별칭을 정의하는 방법'을 보면,
typedef struct _Data{
char c1;
int num1;
} Data, *pData;
가 있습니다.
*pData가 이해가 안갑니다. 구조체 포인터 별칭이라고 되어있는데, Data * p1 = malloc(sizeof(Data); 이건 이해가 가지만,
pData d1 = malloc(sizeof(Data)); 이건 이해가 안갑니다.
pData * d1 = malloc(sizeof(pData)); 이렇게 써야 하는 거 아닌가요? *(애스터리스크)가 빠져있는 이유랑, sizeof 연산자 안에 pData가 아닌 Data가 들어가는 이유가 궁금합니다.
Re: unit. 58 자료형 변환하기
, 도장_ 관리자님이 작성typedef struct _Data{
char c1;
int num1;
} Data, *pData;
이렇게 되어 있습니다.pData d1 = malloc(sizeof(Data));
pData를 원래 형식으로 풀어쓰면
struct _Data *d1 = malloc(sizeof(Data));
입니다.
pData * d1 = malloc(sizeof(pData));
질문한 이 형태라면 풀었을 때
struct _Data **d1 = malloc(sizeof(struct _Data *));
입니다. sizeof(struct _Data *)이면 포인터 크기를 구하는 것이니 64비트 환경이면 8바이트만 구합니다.
컴파일만 된다면 시각화 사이트에서 직접 테스트해보세요.