#define MAX 100
struct bs{
int ab;
int ac;
}be;
struct s{
be b;
int c;
int d;
int e;
}fe;
int a[MAX];
fe f;
技术1 :
f.b.ab = a;
memset(&a,0,sizeof(a));
f.b.ac = MAX;
技术2 :
f.b.ab = a;
f.b.ac = MAX;
memset(&a,0,sizeof(a));
技术3 :
memset(&a,0,sizeof(a));
f.b.ab = a;
f.b.ac = MAX;
这是最好的技术,为什么?
答案 0 :(得分:1)
技术3:
memset(&a,0,sizeof(a));
f.b.ab = a;
f.b.ac = MAX;
因为只有一个 a
来电,fb.b.ab
和memset()
都会有清晰的记忆。您可能希望的任何其他类型的优化都是微不足道的。
答案 1 :(得分:1)
以上都不是。最好的是:
int a[MAX] = { 0 };
fe f = { .b.ab = a, .b.ac = MAX };
答案 2 :(得分:0)
无。你可能意味着一开始就是memset(a,0,sizeof(a));
a
是一个在该上下文中转换为指针的数组,不需要获取地址。 (C FAQ提供了有关数组和指针的更多信息。)
然后对于其余部分,你应该在进一步修改之前修改你的基本知识
struct s{
be b;
int c;
int d;
int e;
}fe;
fe f;
此处结构类型为struct s
,fe
是该类型的变量。所以这里的最后一行毫无意义。