一、基本定义:声明一个新的类型名来代替已有的类型,从而我们方面使用。
二、使用typedef的场合: 1>基本数据类型 2>指针 3>结构体
4>枚举
5>指向函数的指针
下面分别举例来说明一下具体用法 1.1定义基本数据类型 typedef int Myint; //Myint 新的类型名 相当于给int取了个别名 //这里就可以用这个别名来定义int类型的变量 Myint a=10; 同样的基本类型的其他数据类型(float、double、char)都可以利用这种定义方式。 2.1指针 typedef char* String; String name="tom"; 3.1结构体 首先定义一个结构体类型: struct Student { int age ; char name; }; 通常情况下我们定义一个结构体变量的时候这么做: struct Student stu; 如果还想再定义一个 只能在写一遍 struct Student stu2; 很麻烦。所以这里我们利用typedef来定义: 第一种方式: struct Student { int age ; char name; }; typedef struct Student Mystu; 第二种方式: typedef struct Student (Student 也可以省略) { int age ; char name; } Mystu; 4.1枚举 定义枚举类型原理和定义结构体类型类似。 enum Sex {Man,Woman,Unkown}; typedef enum Sex Mysex; Mysex s=Man; 或者 typedefenum Sex Mysex {Man,Woman,Unkown}; 或者 typedefenum Sex (这里的Sex也可以省略){Man,Woman,Unkown}Mysex; 5.1定义指向函数的指针 首先写一个正常情况下(不用typedef)指向函数的指针: int sum(int a, int b) { return a + b; } int main() { //定义一个指针指向sum函数 int (*p) (int, int)=sum; return 0; } 如果下次我们还想在main函数中定义一个指针指向sum2 函数,还得再写int (*p) (int, int)=sum2; 这样很复杂,所以我们引用了typedef,就会变得很简洁。 typedeint (*MyPoint) (int, int); //Mypoint 就是我们定义指向函数指针的类型名称 int sum(int a, int b) { return a + b; } int sum2(int a, int b) { return a + b; } int main() { //这样写就变得很简洁 Mypoint p = sum; Mypoint p2 = sum2; return 0; } 补充:typedef 与宏的区别 例如: #define String2 char* typedef char * String; String s1,s2; s1="tom"; s2="rose"; String2 s3,s4; 区别在于用法上的不同:这里的变量s1,s2是char * 指针,而s3是char * 指针,s4只是char 类型。
|