여기 내 코드입니다 : 3 마지막 줄 (push(top, 2);
)에서는 segfault는
#include <stdio.h>
typedef struct node_struct {
int data;
struct node_struct *next;
} node;
void push(node *top, int data) {
node *new_node = (node*) malloc(sizeof(node));
new_node->data = data;
new_node->next = top;
top = new_node;
}
int main() {
node *top = (node*) malloc(sizeof(node));
top->data = 1;
printf("Set data of top node to: %d\n", top->data);
push(top, 2);
printf("Pushed 2 to top, top->next->data = %d\n", top->next->data);
}
프로그램 세그먼테이션 폴트 (segfault)와 난 그냥 C (포인터를 배우고 top = new_node;
라인에 생각 지금).
내가 뭘 잘못 했니?
참고로, 'top'노드의'next' 요소를 (할당 한 후) 초기화하지 않았습니다. 푸시 기능이 목록의 맨 위에 요소를 푸시 했으므로 'NULL'로 설정하여 목록의 마지막 요소임을 확인하십시오. – Zoneur