引发了异常: 读取访问权限冲突。 p 是 0xCCCCCCCC。

是王哈哈啊 2021-07-19 21:37:42

void showList(Linklist L) {

    LNode* p = NULL;
    p = L->next;
    while (p != NULL)
    {
        printf("%d\t", p->data);
        p = p->next;
    }
    printf("\n");
}

int CreateFrom_H(Linklist L) {

    LNode* s;
    int c,i=2;  //插入的值
    printf("第1个结点的值:");
    scanf_s("%d", &c);
    while (c != 9999){//输入9999创建结束
        s = (Linklist)malloc(sizeof(LNode));
        s->data = c;
        s->next = L->next;
        L->next = s;
        printf("第%d个结点的值:",i);
        scanf_s("%d", &c);
        i = i++;
    } 
    return L;
}
头插法和打印单链表代码如上,但打印是报错但会出结果

...全文
1170 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿麦 2021-07-22
  • 打赏
  • 举报
回复

很熟悉的 0xCCCCCCCC。
感觉这是DEBUG模式下的没有初始化内存,系统置为 0xCC。如果是 RELEASE 就是随机的了。

阿麦 2021-07-22
  • 举报
回复
@阿麦 对了,我遇到这种事,一般是两种情况:一是没有进行必要的初始化,二是野指针(后来养成习惯释放后置NULL,就没有遇到这种情况)
qzjhjxj 2021-07-20
  • 打赏
  • 举报
回复

修改完善如下,供参考:

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

typedef struct list {
    int    data;
    struct list* next;
}LNode, * Linklist;

void showList(Linklist L) {
    LNode* p = NULL;
    p = L->next;
    while (p != NULL)
    {
        printf("%d\t", p->data);
        p = p->next;
    }
    printf("\n");
}

Linklist  CreateFrom_H(Linklist L) { //int CreateFrom_H(Linklist L) {
    LNode* s;
    int c, i = 2;  //插入的值
    printf("第1个结点的值:");
    scanf("%d", &c);
    while (c != 9999) {//输入9999创建结束
        s = (Linklist)malloc(sizeof(LNode));
        s->data = c;
        s->next = L->next;
        L->next = s;
        printf("第%d个结点的值:", i);
        scanf("%d", &c);
        i = i++;
    }
    return L;
}

int main()
{
    Linklist L;
    L = (Linklist)malloc(sizeof(LNode));
    L->next = NULL;
    CreateFrom_H(L);
    showList(L);
    system("pause");
    return 0;
}

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧