구조체와 포인터에 관한 질문
솔찬
질문 제목 : 아래 소스에서 빨강색으로 칠한부분에 도달하면 에러가 발생합니다. 그 이유가 무엇인가요?질문 내용 :
구조체랑 포인터에 대해 공부중이라 대충 간단한 소스를 짜봤는데요.
아래 빨강색에 도달하면 에러가 발생합니다.
왜 에러가 발생하는지 잘 모르겠습니다.
고수님 도와주세요.
#includestdio.h
#includestdlib.h
void main()
{
typedef struct aaa
{
int level;
int count;
struct aaa *next;
}aaa;
aaa *a1;
aaa *p;
aaa *head;
head = null;
p = null;
a1 = null;
head = a1;
a1 = (aaa*)malloc(sizeof(aaa));
p = (aaa*)malloc(sizeof(aaa));
a1-level = 1;
a1-count = 1;
printf(a1.level = %d\n, a1-level);
printf(a1.count = %d\n, a1-count);
p = a1;
p = a1-next;
p-level = 2;
p-count = 2;
printf(p.level = %d\n, p-level);
printf(p.count = %d\n, p-count);
p = head;
while(p != null)
{
printf(p.level = %d\n, p-level);
printf(p.count = %d\n, p-count);
p = p-next;
}}
-
일본어못해요
malloc 함수가 있으면 반드시 free 함수가 있어야 됩니다.
-
집1어치워
제가 알기로는 프로그램은 위에서 아래로 좌에서 우로 순서적으로 이루어지는 언어인가 하여튼 기본적으로 이부분을 지키지 않으 셨고요
head = NULL;
p = NULL;
a1 = NULL;
head = a1; a1이 NULL 이고 대입한 head로 NULL로 되어 있고 메모리 할당한 a1을 대입해야지요
다음
p = a1; //p에 a1이 할당한 주소를 넣는다
이 상태에서 밑에p-level = 2; p-count = 2;값을 넣으면 a1-le -
츠키
p = a1;
p = a1-next;
p-level = 2;
p는 a1-next와 같은 곳을 가리키고 있는데
a1-next는 어디를 가리키고 있습니까?