首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

构造体数组赋值

2013-08-09 
结构体数组赋值结构体定义如下:typedef struct{int keychar name[20]int age}SElemType那么对于SElemT

结构体数组赋值
结构体定义如下:
typedef struct{
  int key;
  char name[20];
  int age;
}SElemType;

那么对于
SElemType r[5]={
{1,"uu",19},
{3,"lili",24},
{5,"abc",20},
{6,"xy",12},
{8,"name",26}
};
有r[0].key=1;r[1].key=3;……

我的问题是,如果我是这样定义的:SElemType m[5]={1,3,5,6,8};
那么m[i].key是多少?(i从0到4)
1,3,5,6,8分别赋值给哪个变量了? C?结构体?数组
[解决办法]


SElemType m[5]={{1},{3},{5},{6},{8}};
这个赋值,就是对应的你的上面的最开始的赋值方式。
如果你不加{},只有m[1].key赋值成1,好玩的是m[2].name经%s打印出了一个心形符号;
下面是我运行试验的代码:

#include<stdio.h>
typedef struct{
int key;
char name[20];
int age;
}SElemType;

int main(void)
{
int i;
SElemType k[5];
for(i=0;i<5;i++)
printf("%d,%5s,%d\n",k[i].key,k[i].name,k[i].age);
SElemType m[5]={1,3,5,6,8};
for(i=0;i<5;i++)
printf("%d,%s,%d\n",m[i].key,m[i].name,m[i].age);
SElemType l[5]={{1},{3},{5},{6},{8}};
for(i=0;i<5;i++)
printf("%d,%s,%d\n",l[i].key,l[i].name,l[i].age);
return 0;
}

热点排行