typedef本身并不会创建新的类型,只是给原的类型起个别名而已。
一般形式为:typedef 原类型 别名
typedef int int_32;
int_32 a = 5, b = 6; //与int a = 5, b = 6;是一样的
typedef几点注意事项:
- typedef本身没有创建新类型,只给原有类型起个别名
- typdef不像define,define被预处理器替换,typedef不会被预处理器替换
- typedef给struct、union起别名时,声明结构体、联合体时就不需要加struct、union关键字了
#include <stdio.h>
//#include <stdint.h>
/*
时间:2022-05-16 15:16
作者:sgbl888
功能:typedef为类型取别名
知识点:
1、typedef并没有创建新类型,只是给已有类型取个别名而已
2、typedef不像define被预处理器替换,typedef是由编译器处理的
3、给struct和union取别名后,声明类型时不需要加struct或union关键字了
*/
//给int类型取别名
typedef int int_32;
//给结构体取别名
typedef struct{
char name[20];
short gender;
float height;
} person; //person就是别名,而不是结果体变量名称
//给联合起别名
typedef union{
int n;
float f;
} uname; //uname是别名,而不是联合体变量名称
int main(){
//int别名int_32
int_32 a = 5, b = 6;
printf("%d %d\n", a, b);
//结构体
//struct person p2; //报错:error: storage size of 'p2' isn't known
person p1 = { //取了别名,就不需要前面加struct关键字了
"hello",
1,
165.6
};
//联合
uname u1; //取了别名后,就不需要前面加struct关键字了
u1.f = 3.13;
printf("%f\n", u1.f);
return 0;
}