구조체끼리 연결 왜 안될까요?
도담
2024.04.21
질문 제목 :
구조체끼리의 연결이 왜 안될까요
질문 내용 :
typedef struct
{
int x, y;
}item;
typedef struct
{
int len;
item* p;
}snake;
이렇게 선언해놓고
main함수에 snake snake[100]; , item item; 이렇게 한 후에
(snake[0].p)-x = 3;
printf(%d, (snake[0].p)-x);
이런식으로 테스트해보니까 컴파일 에러는 안나는데
실행해보니까 바로 작동이 중지되었습니다 뜨면서 꺼지네요
왜 안되는걸까요? 어떻게 수정해야할까요?
-
창의적 2024-04-21
snake[0].p 에서 ITEM* 인 p 가 가리키는 곳이 없습니다. 포인터 변수는 선언만 해놓고 무조건 사용할 수
있는게 아니라, 할당된 어떤 메모리를 가리키고 있어야 하는데, 위 코드는 그 부분이 없죠~
snake[0].p = &item; // p가 ITEM 변수를 가리키게 하고...
이제 p는 item 변수를 가리키게 되었으니...다음의 코드가 성립~
(snake[0].p)-X = 3;