12장 139page
구조체와 포인터를 보고 있는데요,, 갑자기 의문이 생겨서 글을 씁니다.
malloc 함수로 메모리를 동적할당 받았잖아요
pst = (struct student*)malloc(sizeof(struct student));
그러면 책에 나온데로 structstudent의 사이즈는 356 바이트가 될테고,,,
그렇다면 pst 에는 356byte 란 값이 저장 되는건가요???
p;
356 byte란 값이 저장된다로 이해하는게 맞을까요? 아니면은 356 byte가 할당된다가 맞을까요??
sizeof(pst) 하면은 값이 4가 나오잖아요 즉 4 byte 요.. 그렇다면은 이 4byte 의 크기에는(즉 pst 에는)
위에서 동적으로 할당받은 356 byte 크기의 메모리의 첫번째 주소번지가 저장되는 거라고 이해해되 될까요???
이것을 확인해 보기위해
(356 byte 크기의 메모리의 첫번째 주소부분에는 구조체 멤버중 name이 담겨있을것이라 생각해서,,,)
printf(%p\n,pst);
printf(%p\n,&pst-name);이렇게 해보니,,, 같은 값이 나오긴 했습니다..
아래는 위에 질문한것들의 앞부분 소스부분입니다.
제 질문이 잘 이해안가시더라도(표현력이 부족해서,,, ㅜㅜ) 제 생각이 맞는지 한번 살펴봐주세요~ 감사합니다
struct student {
char name[100];
long id;
char major[50];
char address[200];
};
void main()
{
struct student st;
struct student* pst;
pst = (struct student*)malloc(sizeof(struct student));
맑은 2026.10.17
멋진설명..ㅋㅋ
새늘 2026.10.17
포인터는 변수의 시작 주소를 가집니다. 구조체의 포인터도 마찬가지로, 해당 구조체변수에 대한 시작주소를 가지는거죠. 메모리를 모두 저장하는게 아니라, 시작주소를 가집니다.
그리고, malloc() 함수는 동적으로 메모리를 할당한후, 그 시작주소를 리턴합니다. 따라서, pst에는 동적으로 할당받은 메모리 356 byte 내용이 저장된게 아니라, 어딘가 할당된 메모리(356byte = student구조체의 크기) 의 시작주소만 저장되고, 프로그래머는 이