typedef 名字

来源:互联网 发布:感人的句子 知乎 编辑:程序博客网 时间:2024/06/10 00:33

typedef 机制为我们提供了一种通用的类型定义设施,可以用来为内置的或用户定义的数据类型引入助记符号。例如
typedef double wages;
typedef vector<int> vec_int;
typedef vec_int test_scores;
typedef bool in_attendance;

typedef int *Pint;
这些typedef 名字在程序中可被用作类型标识符
// double hourly, weekly;
wages hourly, weekly;
// vector<int> vec1( 10 );
vec_int vec1( 10 );
// vector<int> test0( class_size );
const int class_size = 34;
test_scores test0( class_size );
// vector< bool > attendance;
vector< in_attendance > attendance( class_size );
// int *table[ 10 ];
Pint table[ 10 ];
typedef 定义,以关键字typedef 开始后面是数据类型和标识符。这里的标识符即typedef名字。它并没有引入一种新的类型,而只是为现有类型引入了一个助记符号typedef 名字。对以出现在任何类型名能够出现的地方,
typedef 名字可以被用作程序文档的辅助说明,它也能够降低声明的复杂度,例如,在典型情况下typedef 名字可以用来增强复杂模板声明的定义的可读性。

下面是一个几乎所有人刚开始时都会答错的问题。错误在于将typedef 当作宏扩展。已知下面的typedef
typedef char *cstring;
在以下声明中cstr 的类型是什么
extern const cstring cstr;
第一个回答差不多都是
const char *cstr
即指向const 字符的指针。但是这是不正确的,const 修饰cstr 的类型cstr 是一个指针,因此这个定义声明了cstr 是一个指向字符的const 指针。

char *const cstr;

原创粉丝点击