STM32/STM8技术论坛
直播中

叶冬琳

7年用户 233经验值
私信 关注
[问答]

结构体指针数据怎么初始化?

typedef struct BUF{
        unsigned int  headPosition;
        unsigned int tailPosition;
        RecordStruct *Dat_Buf[Buffer_MAX_SIZE];
}ringbuf;


我想问一下,我如何将上述定义中的“RecordStruct *Dat_Buf[Buffer_MAX_SIZE];”初始化为0

回帖(16)

李维嘉

2019-1-10 09:17:27
本帖最后由 toofree 于 2018-5-2 22:23 编辑

是想把指针数组的每个指针都指向0吗?
把结构体类型定义和具体的结构体定义分开试试。

如果想把指针指向的变量为零,那么你在定义变量的时候初始化为0就可以。
结构体定义只管指针,不管指向的变量,也就是说定义结构体的时候,这个指针为空,野指针。
举报

阿信509

2019-1-10 09:32:01
RecordStruct 那是一个结构呀,你怎么能给一个结构赋0呢,
举报

高颖

2019-1-10 09:37:17
memset
举报

李星童

2019-1-10 09:51:48
老铁 这是啥问题呀 初始化为0不用你动手  比如你定义int a;系统默认它就是0


你试试
ringbuf Ringbuf;
此时Ringbuf自动初始化全是0
举报

李海洪

2019-1-10 10:09:48
本帖最后由 す疯Ⅱ恒す 于 2018-5-2 18:12 编辑

你是想指针数组里的指针变量为0呢?还是指针指向的数据为0呢?
我暂认为你是第一种,定义一个实体,比如ringbuf Ringbuf;
举报

王颖

2019-1-10 10:21:25
引用: 滔滔不绝的滔滔 发表于 2019-1-10 16:30
本帖最后由 す疯Ⅱ恒す 于 2018-5-2 18:12 编辑

你是想指针数组里的指针变量为0呢?还是指针指向的数据为0呢?

楼主要的应该是第二种
举报

何秀珍

2019-1-10 10:31:33
好像不应该在定义typedef struct{}时对其赋值。
举报

李飞

2019-1-10 10:43:18
受到警告
提示: 作者被禁止或删除 内容自动屏蔽
举报

李海洪

2019-1-10 10:56:39
引用: jufenyi 发表于 2019-1-10 16:41
楼主要的应该是第二种

那改成下面?
*Ringbuf.Dat_Buf = (RecordStruct )0;
举报

刘德凤

2019-1-10 11:11:55
Dat_Buf 是一个大小为 Buffer_MAX_SIZE 的数组,数组里面存放指向 RecordStruct  的指针;
初始化为 0 就是将指针指向 0 吗?你应该将问题描述清楚。
举报

万腾龙

2019-1-10 11:28:42
memset
举报

叶冬琳

2019-1-10 11:45:33
好的,谢谢
举报

lee_st

2019-1-12 11:42:07
malloc即可哦
举报

lee_st

2019-1-12 11:42:24
从flash读取也行
举报

lee_st

2019-1-12 11:42:34
直接赋值也可
举报

lee_st

2019-1-12 11:42:40
很简单东西
举报

更多回帖

发帖
×
20
完善资料,
赚取积分