3

我有一个结构数组。我想做的是为这些结构的成员赋值。下面的代码有什么问题......

#include <stdio.h>


typedef struct{
int a1;
int a2;

}sample;


main(){

sample ar[4]={ 
    (1,2),
    (3,4),
    (5,6),
    (7,8) 
};

int i;
for(i=0;i<4;i++){
    printf("ar[%d]----%d  %d",i,ar[i].a1,ar[i].a2);
     }
}

现在它正在成功编译。但输出是

ar[0]----2  4 
ar[1]----6  8 
ar[2]----0  0 
ar[3]----0  0 

而不是(或者可能是程序做对了,我有一个愚蠢的误解)

ar[0]----1  2
ar[1]----3  4 
ar[2]----5  6 
ar[3]----7  8
4

3 回答 3

2

你写:

sample ar[4];
ar[4] = { 
    (1,2),
    (3,4),
    (5,6),
    (7,8) 
};

数组初始值设定项的语法(仅在 的初始化期间有效ar)是:

sample ar[4] = { 
    {1,2},
    {3,4},
    {5,6},
    {7,8} 
};

C11 (n1570),第 6.7.9 节初始化

initializer:   
    assignment-expression 
    { initializer-list } 
    { initializer-list , }

此外,缩进对于编写可读代码很重要。

于 2013-03-30T11:11:30.540 回答
2

你应该这样初始化你的向量:

sample ar[4] = {
    {1,2},
    {3,4},
    {5,6},
    {7,8}
};

此外,您应该指定返回类型main()

       int main()
    // ^^^
    // ...
于 2013-03-30T11:13:48.947 回答
0

您应该使用声明进行分配并始终使用“{”。

sample ar[4] = { 
    {1,2},
    {3,4},
    {5,6},
    {7,8} 
};
于 2013-03-30T11:15:22.350 回答