社区
C++ 语言
帖子详情
给初始化为NULL的结构体指针赋值报错问题
Castiellee929
2019-03-30 09:13:32
这里为什么会报这个错误呀
...全文
1123
5
打赏
收藏
给初始化为NULL的结构体指针赋值报错问题
这里为什么会报这个错误呀
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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类型的指针 指针指向...
结构体指针
memcpy出错_关于memset和memcpy的使用,尤其对结构体进行
初始化
和拷贝的
问题
| 学步园...
虚函数指针应该在进入构造函数
赋值
体之前自动
初始化
的,而memset却又将已经
初始化
好的指针清0了,这就是为什么会产生上面的访问零址的错误。将上面的memset语句去除程序就可以正常运行了。所以,从上面的
问题
中,...
C++ 语言
65,170
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章