———Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ———
1.typedef的作用
typedef关键字可以为各种数据类型定义一个别名。包括基本数据类型(int,char等)和自定义的数据类型(struct等)。
2.typedef的使用
1>定义基本数据类型
例如:typedef int MyInt;
另外,可以在别名的基础上再起一个别名。如:typedef MyInt MyInt2;
2>定义结构体类型
例如:
struct Person { // 第一种
int age;
};
typedef struct Person Person;
typedef struct Person{ // 第二种
int age;
}Person;
typedef struct { // 第三种
int age;
}Person;
3>定义指针类型
// 定义普通类型指针
typedef char *String;
// 定义结构体指针
struct Person { // 第一种
int age;
};
typedef struct Person *PersonPoint;
typedef struct Person { // 第二种
int age;
}* PersonPoint;
4>定义枚举类型
// 定义已定义的枚举类型
enum Season {
spring ,
summer,
autumn,
winter
};
typedef enum Season Season;
// 定义枚举类型的同时定义别名
typedef enum{
spring,
summer,
autumn,
winter
}Season;
5>定义指向函数的指针
typedef int (*MyMethod)(int ,int); // 这里与其他类型不同MyMethod即为别名
int minus(int a,int b)
{
return a + b;
}
int sum(int a, int b)
{
return a +b;
}
// 使用定义的类型指向函数
MyMethod MySum = sum;
MyMethod MyMinus = minus; // 注意这里MyMethod不用加*
3.typedef与#define的区别
#define是预处理指令,是在程序运行之前替换代码
typedef是定义一个新名(别名)
从下面的例子中可以看出二者的差别:
#define String1 char *
typedef char *String2;
String1 s1,s2; // 此处等价于char *s1;chars2;
String2 s3,s4; // 此处等价于char *s3;char*s4