跳到主要内容

几种特殊的数据类型

intptr_t

使用int时也可以使用intptr_t来保证平台的通用性,它在不同的平台上编译时长度不同,但都是标准的平台字长,比如64位机器它的长度就是8字节,32位机器它的长度是4字节,使用它可以安全地进行整数与指针的转换运算,也就是说当需要将指针作为整数运算时,将它转换成intptr_t进行运算才是安全的。intptr_t需要引用stddef.h头文件,它的定义如下:

#if __WORDSIZE == 64
typedef long int intptr_t;
#else
typedef int intptr_t;
#endif

编程中要尽量使用sizeof来计算数据类型的大小。以上类型定义都有相应的无符号类型。

size_t

size_t 是一些C/C++标准在stddef.h中定义的,size_t 类型表示C中任何对象所能达到的最大长度,它是无符号整数。

size_t 在数组下标和内存管理函数之类的地方广泛使用。

它的原型是:unsigned long

wchar_t

中文名:宽字符。wchar_t数据类型一般为16位或32位。wchar_t是C/C++的字符类型,是一种扩展的存储方式。wchar_t类型主要用在国际化程序的实现中,但它不等同于编码。unicode编码的字符一般以wchar_t类型存储。

ptrdiff_t

标准库类型(library type)ptrdiff_t 与 size_t 类型一样,ptrdiff_t 也是一种与机器相关的类型,在 cstddef 头文件中定义。size_t 是unsigned 类型,而 ptrdiff_t 则是 signed 整型