C++类型定义(typedef)
上节我们介绍了枚举类型(enum)。C/C++枚举类型
本节我们介绍类型定义。
-
引入: 在写代码的过程中,经常会遇到使用重复的类型,这些类型名可能会很长,比如自己定义的结构体类型名,枚举类型名等等
这个时候对于这种使用频率较高,长度过长就可以使用类型定义(typedef
)。相当于给类型一个别名。 -
例如上节中介绍的枚举类型:
#include <iostream> using namespace std; //定义一个枚举类型 enum Seasons { Spring, Summer, Autumn, Winter }; //进行类型定义 typedef enum Seasons s; int main() { //定义两个枚举变量 //enum Seasons s1, s2; s s1, s2; s1 = Spring, s2 = Summer; //打印s1与s2的值,Spring与Summer的值 cout << s1 << " " << s2 << endl; return 0; }
这样,给
enum Seasons
一个别名s
; -
由上面可以看出类型定义可以是代码更简洁而且写起来更方便。
-
它还有第二个作用:
提高代码的移植性。
例如:在Linux系统中long
占8个字节,而Windows 32位系统中long
占4个字节。
在Linux系统中进行类型定义typedef long int64
这样就让人知道这里使用的64位int数。使用typedef long long int64
来进行修改。 -
注意: 与宏定义的区别(
typedef
与#define
)#include <iostream> using namespace std; //对char * 分别进行类型定义与宏定义 typedef const char* STRING; #define STR const char * int main() { //这里定义的相当于两个char* 变量 STRING s1, s2; s1 = "这里是s1"; s2 = "这里是s2"; //这里只有s3是char *变量, s4是char类型的变量 //由于s4是char型变量,所以只能保存一个字符 STR s3, s4 = '?'; s3 = "这里是s3"; cout << s1 << endl << s2 << endl; cout << s3 << endl << s4 << endl; return 0; }
输出结果:
这里是s1 这里是s2 这里是s3 ?
-
类型定义与宏定义的区别,类型定义是直接定义了一种类型,而宏定义只是简单的替换关系。
本节介绍了类型定义,下节我们介绍头文件。