概述
结构体与指针
例程1
typedef struct
{
unsigned int a;
unsigned int b;
unsigned int c;
}Test_T;
void main(void)
{
Test_T Temp;
Test_T *Test;//指向数组的指针
Test=&Temp;
Temp.a=0;
Temp.b=1;
Temp.c=2;
*(unsigned int *)((unsigned int)&(Test->a)+0)+=5;
*(unsigned int *)((unsigned int)&(Test->a)+4)+=1;
*(unsigned int *)((unsigned int)&(Test->a)+8)+=4;
printf("a=%d,b=%d,c=%dn",Temp.a,Temp.b,Temp.c);
printf("sizeof(unsigned int)=%dn",sizeof(int));
printf("sizeof(Test_T)=%dn",sizeof(Test_T));
printf("&Temp.a=%dn",&Temp.a);
printf("&Temp.b=%dn",&Temp.b);
printf("&Temp.c=%dn",&Temp.c);
printf("Test=%dn",*Test);
printf("Test=%dn",Test);
printf("Test+1=%dn",Test+1);
printf("Test+1=%dn",Test+2);
}
输出结果
Test为指向结构体的指针,Test值为存放结构体内存的首地址,Test+1实际上指针移动了3*sizeof(unsigned int)。可以通过*Test来查询结构体中第一个成员的值
例程2
typedef struct
{
unsigned int a[2];
unsigned int b;
unsigned int c;
}Test_T;
void main(void)
{
Test_T Temp;
Test_T *Test;//指向数组的指针
Test=&Temp;
Temp.a[0]=8;
Temp.b=1;
Temp.c=2;
printf("sizeof(unsigned int)=%dn",sizeof(int));
printf("sizeof(Test_T)=%dn",sizeof(Test_T));
printf("&Temp.a=%dn",&Temp.a[0]);
printf("&Temp.b=%dn",&Temp.b);
printf("&Temp.c=%dn",&Temp.c);
printf("Test=%dn",Test);
printf("*Test=%dn",*Test);
}
输出结果
最后
以上就是醉熏楼房为你收集整理的结构体与指针的全部内容,希望文章能够帮你解决结构体与指针所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复