结构体声明如何内存的分布, 结构体指针声明结构体的首地址, 结构体成员声明该成员在结构体中的偏移地址。 typedef struct_eg { int x; int y; }eg; int point = 0x30000000; eg *peg = (eg*)point; 可以看到point本身只是个整型变量,但是这样的赋值是合法的,peg->x的值是0x30000000开始的四字节,peg->y是0x30000004开始的四字节 struct A1 { int a; char b; }; struct A2 { char a; int b; }; void test222() { struct A1 x = { 10, 'A' }; struct A2 y = { 'A', 10 }; struct A1 *x1; struct A2 *z; printf("x: %d , %c \n", x.a, x.b); // 10 , A x1 = &x; printf("x1: %d , %c \n", x1->a, x1->b); // 10 ,A z = (A2*)(x1); printf("z: %c , %d \n", z->a, z->b); // , -858993599 } 数组变量转换为结构体 †typedef struct_eg { int x; char y; }eg; eg *peg ; peg = (eg*)((char *)msg); iディレクトリで複数のポータルサイトにディレクトリ登録 コメント: |