연결리스트 작성중에 세그멘테이션 오류

woodydrake의 이미지

기초적인 연결리스트 작성중에 세그멘테이션 오류가 생겼습니다..

#include<stdio.h>
 
struct node {
   int block_number;
   struct node *next;
};
 
void insert_front(struct node *head, int num);
void print_list(struct node *head);
 
int main() {
   struct node *list;
 
   insert_front(list, 10);
 
   print_list(list);
 
   return 0;
}
 
void insert_front(struct node *head, int num) {
    head->block_number = num;
}
 
 
void print_list(struct node *head) {
   struct node *p = head;
   printf("%d->", p->block_number);
}

원초적으로 문제 해결하려고 다른 부분 바떼어내고 지금 시도중인데 이렇게 해도
해결이 안되네요;; 어딘가 분명 잘못된 생각으로 해결못한것같은데...
어느부분에서 포인터를 잘못사용한건지 잘모르겠습니다 ㅠㅠ;;

익명 사용자의 이미지

포인터 개념부터 다시 잡으셔야 할 것 같습니다.

struct node *list만 선언하면 해당 list 변수는 초기화되지 않은 메모리 위치 값만 포함하고 있지, 실제로 이 변수와 연결된 메모리는 아직 할당되지 않은 상태입니다. 이 상태에서 insert_front 함수를 실행하면 초기화되지 않은 메모리에 접근하려고 하기 때문에 당연히 segfault가 뜰 수 밖에 없죠.

세벌의 이미지

gcc -Wall 옵션을 주고 컴파일 해 보셔요. 에러 또는 경고가 자세히 나옵니다.