1 typedef自定义数据类型
typedef int intBS;
intBS就相当是int。
typedef用于声明新的数据类型的名字
- 新名字是某种类型的别名
- 改善程序的可读性,特别是结合结构使用是场景
typedef struct pAndq{
int p;
int q;
}qAp;
qAp = {1,2};
struct后面的名字可以省略。
#include <stdio.h>
typedef struct pAndQ {
int p;
int q;
}pAq;
typedef struct {
int p;
int q;
}qAp;
int main(int argc,char const *argv[])
{
pAq p1 = {1,2};
qAp p2 = {3,4};
printf("%d %d\n",p1.p,p1.q);
printf("%d %d\n",p2.p,p2.q);
return 0;
}
2 联合(union)
typedef union {
int i;
char ch[sizeof(int)];
} CHI;
联合里面的变量公用一块内存地址,当给i赋值或进行修改时ch的内存地址数据也会随之改变。
#include <stdio.h>
typedef struct {
char ch[5];
}qAp;
typedef union {
int i;
char ch[sizeof(int)];
} CHI;
int main(int argc,char const *argv[])
{
qAp h = {"ab"};
//qAp g = {"abcdef"}; //chao超出字符串长度
CHI c;
int i;
c.i = 10000;
for ( i=0;i<sizeof(int);i++ ){
printf("%02hhX",c.ch[i]);
}
printf("\n");
c.ch[1] = 'a';
printf("%d\n",c.i);
return 0;
}
应用场景
- 得到整数或者浮点数存储在内存地址的内部字节
- 当我们需要做文件操作的时候,比如想把一个整数以二进制的形式写入文件里面可以使用union当读写中间媒介