typedef关键字
给数据类型取别名
//定义结构体
typedef struct Person{
char *name;
int age;
}stPerson;
//定义指针
typedef char * str;
//定义数组
typedef int arr[5];
//定义结构体
typedef enum status{
NO,
YES,
}status1;
int main(){
//结构体引用
stPerson p1={"张三",45};
printf("%s,%d\n",p1.name,p1.age); //运行结果:张三,45
//指针使用
str a="heima";
printf("%s\n",a); //运行结果:heima
//数组使用
arr arr1={1,2,3,4,5};
for (int i=0; i<5; i++) {
printf("%d\t",arr1[i]);
}
printf("\n");
//枚举使用
status1 es=YES;
printf("%d\n",es);
return 0;
}
typedef与宏定义的区别
#include <stdio.h>
#define String char *;
typedef char * str;
int main(){
//报错? #define方式
String s1,s2; //这个表示:s1是指针类型,但是s2是char类型
s1="hello";
s2='a';
printf("%s--%c\n",s1,s2);
//typedef方式
str s3,s4;
s3="hello";
s4="你好!";
printf("%s,%s\n",s3,s4);
return 0;
}
宏定义可以实现一些typedef的功能,但是不能完全替换,因为typedef本身具有类型的含义,这是二者最大的区别.