【发布时间】:2011-04-22 06:03:24
【问题描述】:
我曾经以这种方式初始化我的结构:
struct A a = {0};
这似乎对我有用,但是我对 ANSI C、C89、C99 标准存在争议。
只是我在任何文档中都找不到。
你能帮我解决这个问题吗?
这是一个适用于“cl”的示例(VS express 2008)。
#include <stdio.h>
struct DATA
{
int a;
int b;
char tab[3];
};
int main(void)
{
struct DATA A;
struct DATA B = {0};
printf("A.a: %d, A.b: %d, A.tab: %s\n", A.a, A.b, A.tab);
printf("B.a: %d, B.b: %d, B.tab: %s", B.a, B.b, B.tab);
};
>>>>>OUTPUT:
D:\N\workspace>test.exe
A.a: 4203600, A.b: 451445257, A.tab: ■
B.a: 0, B.b: 0, B.tab:
这表明它首先以 1 初始化,然后以 0 结束。
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int a;
int b;
} ASDF;
ASDF A = {1};
int main()
{
printf("a:%d,b:%d\n",A.a,A.b);
return 0;
}
Output:
a:1,b:0
【问题讨论】:
标签: c struct initialization c99 c89