C的指针问题

#include <stdio.h>
#include <stdlib.h>

struct Node
{
    int data;
    struct Node *next;
};

int main()
{
    struct Node* head;
    head->data = 1;
    head->next = NULL;
    printf("%d", head->data);
    return 0;
}

为什么这一段代码不能运行?
另外还有 warning:'head' is uninitialized in this function ?
调试运行到 head 就崩了。。。

阅读 2.5k
2 个回答

编译器已经给你提示了,指针没有初始化呀~~~

要么改成这样:

int main()
{
    struct Node head;
    head.data = 1;
    head.next = NULL;
    printf("%d", head.data);
    
    return 0;
}

要么改成:

int main()
{
    struct Node* head;
    
    head = (struct Node*)malloc(sizeof(struct Node));
    if(head)
    {
        head->data = 1;
        head->next = NULL;
        
        printf("%d", head->data);
    }
    else
    {
        // 内存错误
    }
    
    return 0;
}

struct Node* head; 仅仅定义了一个指针,并没有声明定义一个struct Node结构。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进