用指針對結構體操作
#include "stdio.h"
#include "math.h"
typedef struct
{
unsigned int a;
unsigned int b;
unsigned int c;
}Test_T;
void main(void)
{
while(1)
{
Test_T Temp;
Test_T *Test;//指向數組的指針
Test=&Temp;
Temp.a=0;
Temp.b=1;
Temp.c=2;
*(unsigned int *)((unsigned int)&(Test->a)+0)+=4;
*(unsigned int *)((unsigned int)&(Test->a)+4)+=4;
*(unsigned int *)((unsigned int)&(Test->a)+8)+=4;
printf("a=%d,b=%d,c=%d\n",Temp.a,Temp.b,Temp.c);
printf("sizeof(unsigned int)=%d\n",sizeof(unsigned int));
}
}
運行結果:
*(unsigned int *)((unsigned int)&(Test->a)+0)+=0;
*(unsigned int *)((unsigned int)&(Test->a)+2)+=1;
*(unsigned int *)((unsigned int)&(Test->a)+8)+=4;
輸出結果爲:
結論:1.分配給結構體的地址是連續的
2.unsigned int在不同的環境下其所佔字節數是不一樣的