#include <stdio.h> //基本类型 typedef int MyInt; //可以对typedef产生的类型名二次起别名 typedef MyInt MyInt2; // 给指针类型char *起一个新的类型名称String typedef char * String; //给结构体定义别名 //方法一:先定义类型,再声明别名 struct Student1 { int age; }; typedef struct Student1 MyStu1; //方法二:定义类型的同时声明别名 typedef struct Student2 { int age; } MyStu2; //方法三:定义类型的同时声明别名,此时省略了结构体名称 typedef struct { int age; } MyStu3; //使用枚举的方法和结构体类似 //定义结构体指针 //方法一:先定义类型,在定义指针别名 struct Student4 { int age; }; typedef struct Student4 *MyStu4; //方法二:定义类型的同时定义指针别名 typedef struct Student5 { int age; } *MyStu5; //使用typedef定义函数指针类型的别名,此时MyPoint就是函数指针类型 typedef void (*MyPoint)(int, int); void test(int a, int b); int main() { /************************************************************* * typedef:给已经存在的类型起一个新的名称,该类型可以是系统类型,也可以是自定义类型 * 2.使用场合: * 1、基本数据类型 * 2、指针 * 3、结构体 * 4、枚举 * 5、指向函数的指针 * 注意:使用typedef产生的类型和元类型的作用一样 * typedef的某些功能使用宏定义也可以实现但是,宏定义仅仅只是替换,使用不当会发生错误 *************************************************************/ MyInt a = 10; printf("a = %d\n", a); MyInt2 b = 10; printf("b = %d\n", b); String str = "abc"; printf("str = %s\n", str); MyStu1 stu1 = {20}; MyStu2 stu2 = {21}; MyStu3 stu3 = {22}; printf("stu1.age = %d \n", stu1.age); printf("stu2.age = %d \n", stu2.age); printf("stu3.age = %d \n", stu3.age); struct Student4 Stu4 = {23}; MyStu4 pstu4 = &Stu4; printf("stu4.age = %d \n", pstu4->age); struct Student5 Stu5 = {24}; MyStu5 pstu5 = &Stu5; printf("stu5.age = %d \n", pstu5->age); MyPoint p ; p = test; p(5, 10); return 0; } void test(int a, int b) { printf("a + b = %d\n", a + b); return; }
a = 10 b = 10 str = abc stu1.age = 20 stu2.age = 21 stu3.age = 22 stu4.age = 23 stu5.age = 24 a + b = 15