typedef使用方法
- 先按定义变量的方法写出定义体(int *p);
- 将变量名换成新类型名;(int *Pointer)
- 在前面加typedef;(typedef int *Pointer)
- 用新类型名定义变量。(Pointer p1,p2)
一般将新类型的首字母用作大写,来区别。
typedef命名新类型
使用举例:
用于基本类型
typedef int Integer;
Integer i;
等价于
int i;
用于结构体
typedef struct{
int month;
int day;
int year;
}Date;
Date d1,d2;
等价于:
struct sturct{
int month;
int day;
int year;
}d1,d2;
用于数组
typedef int Num[100];
Num a;
a就是一个100个int数据的数组名。
用于字符串指针
typedef char * String;
String p;
String s[10]; //s为字符型指针数组,等价于 char *s[10];
用于各种指针变量
typedef int (*Pointer)(); //Pointer是指向函数的指针,返回值为int
Pointer p1,p2 //p1,p2为Pointer类型的指针
#define和typedef的区别
- #define在预编译阶段使用,只做简单的字符串替换。
#define PI 3.14
在预编译阶段处理后,程序中的全部PI都会自动替换为3.14。 - typedef是在编译阶段处理的,并不是字符串替换,而是一般用在定义变量的方便。
使用场景
一般会将typedef统一放到一个文件夹中,在使用时在#include进来。
场景举例:
在不同编译系统中,int的字节长度不同,有的是2字节,有的是4字节。为了操作方便,可以:
typedef int Integer;
typedef long Integer;