------
Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1.typedef的定义和作用
typedef是C语言的关键字,作用是为一种数据类型定义一个新名字。数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。
在编程中使用typedef目的一般有两个:
1,给变量一个易记且意义明确的新名字,
2,简化一些比较复杂的类型声明。
2.typedef的使用
1>定义基本数据类型
例如:typedef int MyInt;
另外,可以在别名的基础上再起一个别名。如:typedef MyInt MyInt2;
2>定义结构体类型
结构体的定义有三种方式:
第一种方式: 先定义结构体再定义typedef
struct Person {
int age;
};
typedef struct Person Person;
第二种方式:定义结构体的同时定义typedef
typedef struct Person{
int age;
}Person;
第三种方式:
typedef struct {
int age;
}Person; <span style="color: black; font-family: Consolas, 'Courier New', Courier, mono, serif; line-height: 18px; font-size: 9px; background-color: inherit;"> </span>
3>定义指针类型
定义普通类型的指针
<pre name="code" class="objc">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; <span style="color: black; line-height: 18px; font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 12px; background-color: inherit;"> </span>
5>定义指向函数的指针
// 这里与其他类型不同MyMethod即为别名
typedef int (*MyMethod)(int ,int);
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不用加* <span style="color: black; font-family: Consolas, 'Courier New', Courier, mono, serif; line-height: 18px; font-size: 9px; background-color: inherit;"> </span>
3.typedef与#define的区别
#define是预处理指令,是在程序运行之前替换代码,只替换代码而不进行运算等操作
typedef是定义一个新名(别名)
从下面的例子中可以看出二者的差别:
#define String1 char *
typedef char *String2;
String1 s1,s2; // 此处等价于char *s1;chars2;
String2 s3,s4; // 此处等价于char *s3;char*s4