社区
C++ 语言
帖子详情
给初始化为NULL的结构体指针赋值报错问题
Castiellee929
2019-03-30 09:13:32
这里为什么会报这个错误呀
...全文
1131
5
打赏
收藏
给初始化为NULL的结构体指针赋值报错问题
这里为什么会报这个错误呀
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
CH_GOGO
2019-03-31
打赏
举报
回复
tmp是NULL的时候,指向安全区域,你解引用就会错误。你申请空间时,因为tmp指向堆空间的申请的区域,是可以解引用的。还有如果你不给申请的指针赋值,然后解引用的话,因为指针指向的是未知区域,也是危险的,回错误。要解引用一个指针,首先指针不能指向安全区域了,然后还不能是指向未知区域。
@风轻云淡_
2019-03-30
打赏
举报
回复
搜索一下空指针、野指针相关知识,指针在C语言中的地位是重中之重,在C++中也是不可或缺的。
奚晓华
2019-03-30
打赏
举报
回复
tmp指向null,使用*tmp就会报错,因为这代表要去0的地址取数据,0地址是不允许访问的,所以会报错,换成malloc后,系统会分配可使用的地址给tmp,所以*tmp就不会报错
Castiellee929
2019-03-30
打赏
举报
回复
将
Teacher *tmp = NULL;
改为
Teacher *tmp = (struct Teacher *)malloc(sizeof(struct Teacher));
就不会报错了
但是不知道为啥。
而且
在除了主函数之外的函数体中,定义的结构体变量和结构体指针变量都必须得赋值,否者会报错。
求大佬解答
奚晓华
2019-03-30
打赏
举报
回复
tmp是null,不能使用*tmp,建议tmp声明为Teacher tmp,下面的*tmp都变为tmp即可
C语言中结构体(struct)的几种
初始化
方法
无论哪种
初始化
方式,都可以只
初始化
部分成员,而未被显式
初始化
的成员将被默认
初始化
为0(非指针类型)或
NULL
(指针类型)。值得注意的是,虽然C++风格的
初始化
语法在C++中更常见,但在C语言中也可以使用,使得代码...
C语言18个经典
问题
答录
- 在定义指针变量时,可以将其
初始化
为
NULL
,以表明该指针目前没有指向任何有效的内存地址。 - 在对指针进行
赋值
之前,最好检查一下它是否为
NULL
。 - 对于某些系统调用,如Unix系统的`execl()`,传入的参数列表的...
关于C语言中:
初始化
指向
NULL
的指针作为参数
报错
问题
---原因是指向
NULL
的指针没有指向具体的地址空间
需要在被调用的函数中malloc分配空间 才能对指针指向的地址保存的值进行修改。 对malloc函数不记得还需翻阅 c prime plus int *pt; pt = (int *)malloc(sizeof(int)*capacity); 声明一个指向int类型的指针 指针指向...
结构体的指针成员
初始化
问题
memset(cache, 0, sizeof(*cache)); 所有成员变量的值都是0 , char [10] 型 "\...声明为全局量,会自动
初始化
为上述值。 typedef struct cacheEntryS { int key; /* 数据的key */ int value; /* 数据的data */...
【C/C++】指针的思考与注意:空指针,指针
赋值
,void*指针,二级指针,
结构体指针
,指向同一地址的多个指针释放
问题
指针是地址,而不是具体的标量值,这是指针的精髓,不管是一级指针、二级 指针、 整型指针、浮点数指针、
结构体指针
等等等等所有类型的指针,内容都是个地址,而指针本身当然也是有地址的,而且容易忽略的是,不管这...
C++ 语言
65,182
社区成员
250,527
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章