读取访问权限冲突。0xCDCDCD

本文通过实际案例介绍了C++中链表数据结构的使用及常见错误。作者在新增链表节点时忘记初始化新节点的next指针导致程序出错,最终通过设置p3->next=nullptr解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

已经一年多没有用C++了,最近厌倦了写一些垃圾App,想学一下游戏开发,于是开始复习下C。

今天在复习数据结构的链表部分时,出现了这样的一个错误:

折腾了半天,终于找到了原因,下面是链表数据结构:

typedef struct List {
     List *next;
     // 表的下标
     int i;
     // 总和结果
     int sum;
}List;

下面是我的新增节点部分代码和出错部分代码:

// 将计算结果存下来
p3->next = (struct List *)malloc(sizeof(List));
p3 = p3->next;
p3->i = i;
p3->sum = total;
i++;

while (p2 != nullptr)
{
     if (total - p2->sum == 400)
     // 代码部分省略
     p2 = p2->next;
}

相信老司机一眼就能看出来,是新增节点时出的错,p3应该在分配内存时加一句

p3->next = nullptr; (nullptr为C++11标准,等于NULL)

这样就没有任何问题了,原因是,如果定义了一个指针变量而没有初始化,指针将指向一个不确定的值,这时如果对指针进行操作就会报错。

引用某大牛的话,C++是一个高冷的女神,一旦你征服了她,抛开她的外衣,也不过如此。希望持之以恒,与各位初学者共勉。

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值