源码:
#include <stdio.h>
struct stcTest1
{
int a;
char b;
int c;
};
struct stcTest2
{
char a;
int b;
char c;
};
struct stcTest3
{
int a;
char b[9];
int c;
};
int main()
{
stcTest1 t1;
stcTest2 t2;
stcTest3 t3;
int a;
int c;
char b;
char b2[9];
printf("-----------stcTest1-------------\n");
printf("stcTest1: %d\n",sizeof(stcTest1));
printf("stcTest1: %d\n",&t1);
printf("stcTest1 next: %d\n",(&t1)+1);
printf("stcTest1.a: %d\n",&t1.a);
printf("stcTest1.b: %d\n",&t1.b);
printf("stcTest1.c: %d\n",&t1.c);
printf("-----------stcTest2-------------\n");
printf("stcTest2: %d\n",sizeof(stcTest2));
printf("stcTest2: %d\n",&t2);
printf("stcTest2 next: %d\n",&t2+1);
printf("stcTest2.a: %d\n",&t2.a);
printf("stcTest2.b: %d\n",&t2.b);
printf("stcTest2.c: %d\n",&t2.c);
printf("-----------stcTest3-------------\n");
printf("stcTest3: %d\n",sizeof(stcTest3));
printf("stcTest3: %d\n",&t3);
printf("stcTest3 next: %d\n",&t3+1);
printf("stcTest3.a: %d\n",&t3.a);
printf("stcTest3.b: %d\n",&t3.b);
printf("stcTest3.c: %d\n",&t3.c);
printf("------------------------\n");
printf("a: %d\n",&a);
printf("c: %d\n",&c);
printf("b: %d\n",&b);
printf("b2: %d\n",b2);
printf("b2len: %d\n",sizeof(b2));
getchar();
return 0;
}
结果:
分析:20=4+4*3+4;4*3>9
想知道下一个地址:&t1+1,sizeof(t1)=((&t1+1)-(&t1))/4 &t1:表示地址编号