{
INT8 *key;
INT8 *value;
}prop_data;
prop_data properties[KEYS_MAX];
请问这个结构体数组初始化怎么弄?我是用来保存键值对的。。。
memset(properties,0,sizeof(properties)*KEYS_MAX) OK么?
12 个解决方案
#1
你这样是吧struct的指针成员都赋值为地址为0,无法使用
#2
神玛意思啊楼上,不行吗,可以吧
#3
lz的做法有问题
memset(properties,0,sizeof(properties));//就够了不需要*KEYS_MAX
否则的话就这么写:
memset(properties,0,sizeof(prop_data)*KEYS_MAX);
memset(properties,0,sizeof(properties));//就够了不需要*KEYS_MAX
否则的话就这么写:
memset(properties,0,sizeof(prop_data)*KEYS_MAX);
#4
全局变量,默认就全初始化为0了。
局部的,你那个可以
局部的,你那个可以
#5
看错了
sizeof(properties)出来就是数组大小了
#6
memset(properties,&0,sizeof(properties)*KEYS_MAX);
如果是因为结构体内元素是指针的话,是不是这样改? 好奇怪,取常数的地址。。。。。。
#7
prop_data properties[KEYS_MAX] = {};即可
#8
我开始写的是
prop_data properties[KEYS_MAX] = {0};
被老大给打回来了,说是不合格,这样有什么不好的影响么?求详解!
#9
来学习的
#10
刚看到一个帖子
http://topic.csdn.net/u/20100709/12/55737840-7a5e-4a1c-81ae-d256ba17409f.html
1. 结构体中不要放置类。
2. sizeof对于包含指针的结构获得的长度不是你想要的。
有木有牛叉人士详解一把?
http://topic.csdn.net/u/20100709/12/55737840-7a5e-4a1c-81ae-d256ba17409f.html
1. 结构体中不要放置类。
2. sizeof对于包含指针的结构获得的长度不是你想要的。
有木有牛叉人士详解一把?
#11
1. 关于使用 ={} 初始化。
这种语法指定某复合数据(数组、结构或结构数组)的内容初始置零,无关其结构。
使用 ={0} 是针对一维数组或一个首成员非复合数据的结构体初始化的代码。在你所描述的情况下,可能编译提示一个警告(gcc -Wall)或什么的。
2. sizeof 结构体的长度。
对结构类型 sizeof 只是直白地返回其占用的空间尺寸。若结构中有指针域,则对于该域,只占用了一个指针(int)的大小。至于是不是你想要的,看实际情况了。
3. 结构体中不要放置类。
对于结构体某域是一个类对象(实体)的话,使用直白地内存位置清零则可能导致问题。
这是因为继承与多态的原因,编译器会在类对象中放置一些地址。
在这种情况下的结构体不可以被清零。否则使用其类对象域会发生危险。
这种语法指定某复合数据(数组、结构或结构数组)的内容初始置零,无关其结构。
使用 ={0} 是针对一维数组或一个首成员非复合数据的结构体初始化的代码。在你所描述的情况下,可能编译提示一个警告(gcc -Wall)或什么的。
2. sizeof 结构体的长度。
对结构类型 sizeof 只是直白地返回其占用的空间尺寸。若结构中有指针域,则对于该域,只占用了一个指针(int)的大小。至于是不是你想要的,看实际情况了。
3. 结构体中不要放置类。
对于结构体某域是一个类对象(实体)的话,使用直白地内存位置清零则可能导致问题。
这是因为继承与多态的原因,编译器会在类对象中放置一些地址。
在这种情况下的结构体不可以被清零。否则使用其类对象域会发生危险。
#12
明白了!
当struct中有指针的时候,sizeof(struct)就可能有问题,因为指针变量本身的大小可能和指针指向的类型大小不一样。。。。。。
当struct中有指针的时候,sizeof(struct)就可能有问题,因为指针变量本身的大小可能和指针指向的类型大小不一样。。。。。。
#1
你这样是吧struct的指针成员都赋值为地址为0,无法使用
#2
神玛意思啊楼上,不行吗,可以吧
#3
lz的做法有问题
memset(properties,0,sizeof(properties));//就够了不需要*KEYS_MAX
否则的话就这么写:
memset(properties,0,sizeof(prop_data)*KEYS_MAX);
memset(properties,0,sizeof(properties));//就够了不需要*KEYS_MAX
否则的话就这么写:
memset(properties,0,sizeof(prop_data)*KEYS_MAX);
#4
全局变量,默认就全初始化为0了。
局部的,你那个可以
局部的,你那个可以
#5
看错了
sizeof(properties)出来就是数组大小了
#6
memset(properties,&0,sizeof(properties)*KEYS_MAX);
如果是因为结构体内元素是指针的话,是不是这样改? 好奇怪,取常数的地址。。。。。。
#7
prop_data properties[KEYS_MAX] = {};即可
#8
我开始写的是
prop_data properties[KEYS_MAX] = {0};
被老大给打回来了,说是不合格,这样有什么不好的影响么?求详解!
#9
来学习的
#10
刚看到一个帖子
http://topic.csdn.net/u/20100709/12/55737840-7a5e-4a1c-81ae-d256ba17409f.html
1. 结构体中不要放置类。
2. sizeof对于包含指针的结构获得的长度不是你想要的。
有木有牛叉人士详解一把?
http://topic.csdn.net/u/20100709/12/55737840-7a5e-4a1c-81ae-d256ba17409f.html
1. 结构体中不要放置类。
2. sizeof对于包含指针的结构获得的长度不是你想要的。
有木有牛叉人士详解一把?
#11
1. 关于使用 ={} 初始化。
这种语法指定某复合数据(数组、结构或结构数组)的内容初始置零,无关其结构。
使用 ={0} 是针对一维数组或一个首成员非复合数据的结构体初始化的代码。在你所描述的情况下,可能编译提示一个警告(gcc -Wall)或什么的。
2. sizeof 结构体的长度。
对结构类型 sizeof 只是直白地返回其占用的空间尺寸。若结构中有指针域,则对于该域,只占用了一个指针(int)的大小。至于是不是你想要的,看实际情况了。
3. 结构体中不要放置类。
对于结构体某域是一个类对象(实体)的话,使用直白地内存位置清零则可能导致问题。
这是因为继承与多态的原因,编译器会在类对象中放置一些地址。
在这种情况下的结构体不可以被清零。否则使用其类对象域会发生危险。
这种语法指定某复合数据(数组、结构或结构数组)的内容初始置零,无关其结构。
使用 ={0} 是针对一维数组或一个首成员非复合数据的结构体初始化的代码。在你所描述的情况下,可能编译提示一个警告(gcc -Wall)或什么的。
2. sizeof 结构体的长度。
对结构类型 sizeof 只是直白地返回其占用的空间尺寸。若结构中有指针域,则对于该域,只占用了一个指针(int)的大小。至于是不是你想要的,看实际情况了。
3. 结构体中不要放置类。
对于结构体某域是一个类对象(实体)的话,使用直白地内存位置清零则可能导致问题。
这是因为继承与多态的原因,编译器会在类对象中放置一些地址。
在这种情况下的结构体不可以被清零。否则使用其类对象域会发生危险。
#12
明白了!
当struct中有指针的时候,sizeof(struct)就可能有问题,因为指针变量本身的大小可能和指针指向的类型大小不一样。。。。。。
当struct中有指针的时候,sizeof(struct)就可能有问题,因为指针变量本身的大小可能和指针指向的类型大小不一样。。。。。。