已经一年多没有用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++是一个高冷的女神,一旦你征服了她,抛开她的外衣,也不过如此。希望持之以恒,与各位初学者共勉。