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

关于结构体赋值的方式,该怎么解决

2012-03-31 
关于结构体赋值的方式C/C++ code#include stdio.htypedef struct {unsigned int name[20]} myname#def

关于结构体赋值的方式

C/C++ code
#include <stdio.h>typedef struct {unsigned int name[20];} myname;#define name1 \(myname){{ \[0 ... 19] = 1\}}int main(){    myname x;//  x = name1;    x = (myname){{[0 ... 19] = 2}}; //这里是什么意思?    int i;    for(i=0;i<20;i++)    {           printf("%d\n",x.name[i]);    }       return 0;}


[解决办法]
结构体也是可以像给数组赋初值一样,用{}来赋初值。
第一个{}是给结构体赋初值;
第二个{}是给结构体内的数组赋初值;
至于[0...19],这个不是集合的表达方式么,长见识了……
后来用gcc3.4试了下,是可以识别的,下面的语句:
int a[20] = {[0 ... 4 ] = 5 };
也是可以工作的,是将数组的前5个赋值为5。
刚查了下,也没找到它的说明,不知道哪位高手看到过这种赋值方式
[解决办法]
这是GCC编译器扩展语法,常用于数组初始化,在标准C中是没有的。
参考官方文档:
http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Designated-Inits.html#Designated-Inits

热点排行