弱弱的问个结构体初始化的问题

汗晕倒 2010-12-10 02:55:21
我有一个结构体比如
struct AA
{
int temp_a;
char temp_b;
}

struct BB
{
int temp_c;
.....
}

struct CC
{
int num;
struct AA* temp_AA;
struct BB* temp_BB;
}


现在我要创建一个数组,里面有100个CC的,struct CC temp_CC[100];我想问这个数组怎么初始化,我现在想到的就是写个循环,然后给每个元素里面的temp_AA temp_BB 赋值NULL。不过感觉有点麻烦~不知道还有其他方法么
...全文
112 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhazhaniu 2010-12-10
  • 打赏
  • 举报
回复
用memset或者写个构造函数呗~
个人觉得构造函数比较好,比较直观,memset要算大小
flysnowhite 2010-12-10
  • 打赏
  • 举报
回复
使用memset,很方便,指针也可以初始化的。
zhutianjin4355255 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 shisi 的回复:]
引用 8 楼 zhutianjin4355255 的回复:

memset 正解,不过有个缺陷,只能8位赋值


这个是什么意思??我的结构体里面主要有两个指针。这两个指针不初始化的话很容易出事
[/Quote]

memset设0 指针也是为空的,没问题
汗晕倒 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 zhao4zhong1 的回复:]

static struct CC temp_CC[100];
[/Quote]
这样静态有什么作用??
我的是要多个文件同使用的。
暂时就是用memset的,待测试不行再循环赋值算了
赵4老师 2010-12-10
  • 打赏
  • 举报
回复
static struct CC temp_CC[100];
luciferisnotsatan 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 shisi 的回复:]

引用 8 楼 zhutianjin4355255 的回复:

memset 正解,不过有个缺陷,只能8位赋值


这个是什么意思??我的结构体里面主要有两个指针。这两个指针不初始化的话很容易出事
[/Quote]
memset是单字节赋值的,虽然第二个参数是int型
void *memset(
void *dest,
int c,
size_t count
);
使用c来填充从dest开始的count个字节
汗晕倒 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zhutianjin4355255 的回复:]

memset 正解,不过有个缺陷,只能8位赋值
[/Quote]

这个是什么意思??我的结构体里面主要有两个指针。这两个指针不初始化的话很容易出事
btbb1989 2010-12-10
  • 打赏
  • 举报
回复
memset函数啊
zhutianjin4355255 2010-12-10
  • 打赏
  • 举报
回复
memset 正解,不过有个缺陷,只能8位赋值
sky198306 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 babilife 的回复:]
引用 1 楼 ouyh12345 的回复:
memset


++
[/Quote]
++++
walkersfaint 2010-12-10
  • 打赏
  • 举报
回复
memset(temp_CC, 0, sizeof(CC)*100);
  • 打赏
  • 举报
回复
struct CC
{
int num;
struct AA* temp_AA;
struct BB* temp_BB;

CC()
{
num = 0;
temp_AA = NULL;
temp_BB = NULL;
}
}
乐哉悠哉 2010-12-10
  • 打赏
  • 举报
回复
如果不需要对结构体赋特定值的话,可以只对其中部分的成员变量进行初始化,要求初始化的数据至少有一个,其他没有初始化的成员变量由系统完成初始化,为其提供缺省的初始化值。
各种基本数据类型的成员变量初始化缺省值如下:

int 0
char '\0x0'
float 0.0
double 0.0
char array[] ""
至善者善之敌 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ouyh12345 的回复:]
memset
[/Quote]

++
ouyh12345 2010-12-10
  • 打赏
  • 举报
回复
要注意字节对齐
ouyh12345 2010-12-10
  • 打赏
  • 举报
回复
memset

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧