typedef struct _tagMyST
{
int a; // 멤버
float f;
} MYST;
위처럼 있을때 안의 요소들은 구조체의 멤버라고 함
변수가 아니라 멤버임
MYST s = {}; // 구조체 초기화
typedef struct _tagMyST
{
int a; // 멤버
float f;
} MYST;
////////////////////////////////////////////////////
// 구조체와 포인터
MYST s = {0, 0.f};
MYST* pST = &s;
(*pST).a = 100;
(*pST).f = 0.4f;
// 또는?
pST->a = 200;
pST->f = 3.14f;
return 0;
}
pST의 크기는 8바이트임 (int와 float)
int가 메모리의 4바이트를 차지하는 것처럼, MYST는 8바이트를 차지하고 이제 그 안의 멤버들이 각각 4바이트, 4바이트씩 차지하고 있는거임
그러니까 *
을 사용해서 포인터의 값으로 접근한 뒤 멤버를 설정해줘서 값을 변경하면 됨
지금까지 설명했던 포인터의 개념과 완전 같음, 다만 구조체다보니 포인터 변수의 크기가 다르고 .a, .f 또는 ->a, ->f 이런식으로 지정해줘야 하는게 추가됐을 뿐임