一 typedef
就是别名,类似java 代理
并没有创建新的数据类型,只是给现有类型创建了别名
typedef int _in;
typedef char * string;
typedef int(*PFI)(char *, char *);
typedef Tnode * Treeptr;
typedef struct Tnode {
char *word;
int count;
Treeptr left;
Treeptr right;
} BinaryTreeNode;
int fun(char *, char *) {
return 0;
}
int test4() {
_in a = 20;
printf("%d\n", a);
string str;
str = (char *)"hello world";
PFI fp;
fp = fun;
char * ch;
ch = (char *)"hello world";
BinaryTreeNode* node;
node = (BinaryTreeNode *)malloc(sizeof(BinaryTreeNode));
system("pause");
return 0;
}
二 union 公用体
成员共用一段内存,内存地址一致;最近定义的才有效
union MyUnion {
int a;
char b;
float c;
};
int test4() {
MyUnion unio;
unio.a = 10;
unio.b = 'a';
unio.c = 1.2f;
printf("a: %#x, b: %#x, c: %#x\n", &unio.a, &unio.b, &unio.c);
printf("a: %d, b: %c, c: %f\n", unio.a, unio.b, unio.c);
system("pause");
return 0;
}
运行结果:
a: 0x8ff660, b: 0x8ff660, c: 0x8ff660
a: 1067030938, b: ? c: 1.200000