【问题标题】:Error (segmentation fault core dumped) - List and struct pointer错误(分段错误核心转储) - 列表和结构指针
【发布时间】:2016-09-07 13:05:57
【问题描述】:

您好,我是 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; 
}

【问题讨论】:

  • OP 你为什么回滚我所做的编辑以使代码更易于阅读?
  • 因为谁真的想要缩进和语法高亮? :P
  • @MichaelDorgan pffftttt 撤消回滚以恢复缩进和语法突出显示..:P 干得好!
  • 是的,你知道。老实说,我一直在等待 OP 通过再次回滚来欺骗我们……
  • 是的,我知道你的意思,以为 OP 通过回滚来欺骗我! xD

标签: c list pointers struct segmentation-fault


【解决方案1】:

第一次通过你的插入:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-04
    • 2015-05-12
    • 2020-04-06
    • 1970-01-01
    • 2018-01-05
    • 2023-04-04
    • 1970-01-01
    • 2017-06-12
    相关资源
    最近更新 更多