c - 错误(段错误核心转储)-列表和结构指针

标签 c list pointers struct segmentation-fault

嗨,我是 C 编程初学者;我正在尝试学习列表和指向结构的指针。这是我的程序,使用指针在元素后实现列表元素。有人可以告诉我为什么它会给我错误段错误核心转储吗?

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

struct ListNode{ 
    int x; 
    struct ListNode* nextPtr; 
}; 

typedef struct ListNode ListNode; 
typedef ListNode* ListNodePtr; 

void insert(ListNodePtr* sPtr, int n); 

int main() 
{ 
    int f; 

    scanf("%d", &f); 
    ListNodePtr startPtr=NULL; 

    while(f!=-1) 
    { 
        insert(&startPtr, f); 

        scanf("%d",&f); 
        printf("/n"); 
    } 

    return 0; 
} 

void insert(ListNodePtr* sPtr, int n) 
{ 
    ListNodePtr newPtr; 

    newPtr=malloc(sizeof(ListNode)); 

    if(newPtr!=NULL) 
    { 
        newPtr->x=n; 
        newPtr->nextPtr=NULL; 
    } 

    ListNodePtr q,w; 

    q=*sPtr; 
    w=q->nextPtr; 

    while(w!=NULL) 
    { 
        q=w; 
        w=q->nextPtr; 
    } 

    w=newPtr; 
}

最佳答案

第一次插入时:

q=*sPtr; 
w=q->nextPtr; 

*sPtr 等于 NULL。您正在取消引用它,这将导致 q->nextPtr; 上出现段错误。

关于c - 错误(段错误核心转储)-列表和结构指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37174343/

相关文章:

objective-c - 将 objective-C 应用程序切换到 x86_64 并且 sizeof 返回错误结果

c - 识别哪个逻辑核心是超线程的,哪个不是

c - 将文件读取为字节数组

C#:如何将 2 个列表放入一个 2 元组列表中

C 带全局变量的链表

c++ - 为什么 c++ 指针 * 关联到声明的变量,而不是类型?

C语言如何截取字符串的一部分

r - 计算列表中元素的平均值

python - 使用python将两个列表中的元素分组到新列表中

将 void * 转换为指针结构?