#include<stdio.h>#include<stdlib.h>/*结构体变量的值是整个结构体。结构体变量名就是变量名。
象int a一样,只是printf 处理不了结构体。通过 printf
输出结构体,结果是没有意义的(整个结构体复制堆栈中,按
照对应的格式输出)。取地址要用&,不用钻牛角尖,不直接
输出就行了*/typedefstruct{short d;short e;}DATA2;typedefstruct{int a;short b;
DATA2 c;char f;}DATA1;voidtest01(){
DATA1 stu ={0};printf("长度=%d\n",sizeof(stu));printf("a的地址%p\n",&stu.a);printf("b的地址%p\n",&stu.b);printf("d的地址%p\n",&stu.c.d);printf("e的地址%p\n",&stu.c.e);printf("f的地址%p\n",&stu.f);}/*结果
a a a a
b b d d
e f
*/voidtest02(){
DATA2 stu ={20,'a'};char*p =&stu;printf("d的值是%c\n",*(short*)(p +2));//(short*)p->c是错的,一个char型指针不能指向结构体成员}voidtest03(){
DATA2 li ={16,5};printf("%8x\n", li);//printf("%x\n", *li);是错的, * 操作的只能是指针printf("%p\n",&li);printf("%8x\n",*(int*)&li);}