用指針對結構體操作

用指針對結構體操作

#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在不同的環境下其所佔字節數是不一樣的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章