社区
C++ 语言
帖子详情
给初始化为NULL的结构体指针赋值报错问题
Castiellee929
2019-03-30 09:13:32
这里为什么会报这个错误呀
...全文
1171
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)的几种
初始化
方法
相信大家都知道struct结构体是C语言中非常重要的复合类型,
初始化
的方法很多,那么小编下面对这些方法进行总结,便于自己和大家以后查阅,有需要的可以参考借鉴。
C语言18个经典
问题
答录
1.这样的
初始化
有什么
问题
?char *p = malloc(10); 编译器提示“非法初始式” 云云。 答:这个声明是静态或非局部变量吗?函数调用只能出现在自动变量(即局部非静态变量) 的初始式中。 因为静态变量的地址必须在编译的过程中就确定下来而malloc()申请的内存地址是在运行时确定的。
关于C语言中:
初始化
指向
NULL
的指针作为参数
报错
问题
---原因是指向
NULL
的指针没有指向具体的地址空间
需要在被调用的函数中malloc分配空间 才能对指针指向的地址保存的值进行修改。 对malloc函数不记得还需翻阅 c prime plus int *pt; pt = (int *)malloc(sizeof(int)*capacity); 声明一个指向int类型的指针 指针指向的地址首部的位置以及指向的内存大小 #include<stdio.h> #include<stdli...
STM32嵌入式开发必会:结构体
初始化
,
结构体指针
数组技巧
本文介绍了嵌入式开发中结构体
初始化
的技巧,重点讲解了指定成员
初始化
(Designated Initializers)的用法。该方法通过".成员名=值"的语法可精准
赋值
任意成员,未
赋值
成员自动
初始化
为0,特别适合嵌套结构体和外设配置场景。文章详细解析了
初始化
原理,演示了USART外设句柄配置的典型应用,包括单实例
初始化
、多实例批量管理和跨平台适配技巧,并指出了常见错误防范要点。这种结构体
初始化
方式在嵌入式开发中广泛用于硬件参数绑定和复杂数据结构配置,能有效提升代码可读性和维护性。
C++ 语言
65,209
社区成员
250,517
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章