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

请问C中用for循环读写struct的成员

2012-02-15 
请教C中用for循环读写struct的成员我在C中定义了如下的一个结构体:typedef struct tag{unsigned int X08c

请教C中用for循环读写struct的成员
我在C中定义了如下的一个结构体:

typedef struct tag
{
  unsigned int X08;
  char X0C;
  unsigned int X10;
  unsigned short X1C;
  }Reg;


Reg aa;

for(i=0;i<4;i++)
{
aa 的i个元素 = 某一个值;
}

上述代码中:aa 的i个元素,如何写?




[解决办法]
那你得把aa定义成一个数组,比如aa[10]
[解决办法]
首先aa需要是个数组,或指针然后开辟动态内存。然后该结构最好用类,重载等于运算符。
[解决办法]

C/C++ code
typedef struct tag{  unsigned int X08;  char X0C;  unsigned int X10;  unsigned short X1C;  }Reg; Reg aa[4];for(i=0;i<4;i++){aa[i].X08 = 某一个值;aa[i].X0C = 某一个值;aa[i].X10 = 某一个值;aa[i].X1C = 某一个值;}
[解决办法]
这个涉及到结构体内的成员内存的分布问题,根据编译器的不同也会有不同,在VC6下可以通过project->settings->C/C++->CODE Generation->struct member alignment来设置结构体成员对齐方式,VC6下默认是8 bytes,这样的话,你这个结构体总共占了16个字节,你可以通过取到结构体的指针,然后把它强转成char*或者int*来进行移动,*((int*)&aa + i) = 1。还有你的这个结构体如果把第四个成员写到第三个的话就会只占12个字节,具体可以google下结构体成员内存分布,可以通过sizeof来打印学习。另外赋值的时候可能还涉及大小端的问题
[解决办法]
好像不行吧,第i个,又不是数组,再说你这些元素长度也不一样,通过指针也不行
探讨
我在C中定义了如下的一个结构体:

typedef struct tag
{
unsigned int X08;
char X0C;
unsigned int X10;
unsigned short X1C;
}Reg;


Reg aa;

for(i=0;i<4;i++)
{
aa 的i个元素 = 某一个值;
}

上述代……

热点排行