取消对NULL指针的引用,求助各位大佬

u010402436 2020-03-14 06:14:36
今天学了链表,在堆上手动开辟并赋值后可以正常运行,但是最后提示警告:取消对NULL指针“node”的引用,实在想不到是哪里有问题,求助各位大佬,还是个新手,请各位轻喷
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct Teacher
{
char name[64];
int age;
char sex[12];
struct Teacher* LinkNode;
};

void distr()
{
struct Teacher* node1 = malloc(sizeof(struct Teacher));
struct Teacher* node2 = malloc(sizeof(struct Teacher));
struct Teacher* node3 = malloc(sizeof(struct Teacher));
struct Teacher* node4 = malloc(sizeof(struct Teacher));
struct Teacher* node5 = malloc(sizeof(struct Teacher));
struct Teacher* node6 = malloc(sizeof(struct Teacher));

//手动为每一个老师的属性赋值
node1->age = 24; strcpy(node1->name, "李老师"); strcpy(node1->sex, "男");
node2->age = 41; strcpy(node2->name, "吴老师"); strcpy(node2->sex, "女");
node3->age = 32; strcpy(node3->name, "周老师"); strcpy(node3->sex, "男");
node4->age = 34; strcpy(node4->name, "黄老师"); strcpy(node4->sex, "男");
node5->age = 28; strcpy(node5->name, "王老师"); strcpy(node5->sex, "女");
node6->age = 33; strcpy(node6->name, "薛老师"); strcpy(node6->sex, "女");

//建立链表中的关系
node1->LinkNode = node2;
node2->LinkNode = node3;
node3->LinkNode = node4;
node4->LinkNode = node5;
node5->LinkNode = node6;
node6->LinkNode = NULL;

//遍历并打印链表
struct Teacher* Ptemp = node1;
while (Ptemp != NULL)
{
printf("老师的名字是:%s\t性别是:%s\t年龄是:%d\n",Ptemp->name,Ptemp->sex,Ptemp->age);
Ptemp = Ptemp->LinkNode;
}

//释放链表
free(node6); free(node5); free(node4); free(node3); free(node2); free(node1);

}


int main()
{
distr();

system("pause");
return EXIT_SUCCESS;
}
...全文
2400 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
寻开心 2020-03-14
  • 打赏
  • 举报
回复
或者,在25行赋值之前统一写一行
if ( NULL ==node1 || NULL==node2 || ..... ) return;

它这个检测就是让你malloc后要有一个对NULL的判断之后再做其他的处理
寻开心 2020-03-14
  • 打赏
  • 举报
回复
警告的意思是让你检查指针是否是NULL的意思
你这个是VS2019?
VS2019下strcpy都变成strcpy_s了, 而且提示啥时候变成这样的中文说明了

if ( node1 != NULL ) {
node->age = ......
}
u010402436 2020-03-14
  • 打赏
  • 举报
回复
u010402436 2020-03-14
  • 打赏
  • 举报
回复
严重性	代码	说明	项目	文件	行	禁止显示状态	详细说明
警告 C6011 取消对 NULL 指针“node1”的引用。 day06 C:\USERS\ADMINISTRATOR\DESKTOP\单向动态链表.C 25
寻开心 2020-03-14
  • 打赏
  • 举报
回复
把警告的地方贴出来, 在哪行? 警告的具体原文是什么?
u010402436 2020-03-14
  • 打赏
  • 举报
回复
1楼大佬这个方法还是不行啊,VS2019上还是提示一样的警告。。。非常感谢大佬的回复
寻开心 2020-03-14
  • 打赏
  • 举报
回复
struct Teacher* node1 = (struct Teacher *) malloc(sizeof(struct Teacher));
其他几个也都如此处理

别的地方没有问题

70,006

社区成员

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

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