|
5啊哈币
如下,写了一个结构体数组,想计算出里面的数,但结果为1,WHY?
-----------------------------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
int main()
{
struct stu{
int a;
int b;
char c;
};
struct stu abc[2][3]={
{1,2,'a'},{2,3,'b'},{3,4,'c'},
{10,20,'d'},{20,30,'e'},{30,40,'f'}
};
int i=0,k=0;
for(i=0;i<3;i++)
k+=abc[0][i].a;
printf("%d\n",k);
system("pause");
return 0;
}
-------------------------------------------------------------------------------------------
我原来觉得随着i的增加,应该取到1.2.3三个值,结果为6才对,但结果为1,为什么呢?
|
最佳答案
查看完整内容
数量少就一个个去写
struct foo one = {1, 2, 'a'};
struct foo two = {2, 3, 'b'};
……
主要原因是,手写容易出错,少了一个大括号就会出错。另外编译器对这东西的实现不怎么好(不怎么符合ISO C的标准,因为标准关于初始化这段本身就太复杂了)
数量多了肯定不能写成字面值了,一般从外部读取
3维数组应该在设计上加以避免
我印象中没有遇到过3维数组最为自然的情况
|