1.size_t
size_t是标准C库中定义的,应为unsigned int,在64位系统中为 long unsigned int。
size_t类型通常用于循环、数组索引、大小的存储和地址运算。
2.size_type
由string类类型和vector类类型定义的类型,用以保存任意string对象或vector对象的长度,标准库类型将size_type定义为unsigned类型。
3.ssize_t
ssize_t是signed size_t,size_t是标准C库中定义的,应为unsigned int,定义为typedef int ssize_t。
4.ptrdiff_t
ptrdiff_t是C/C++标准库中定义的一个与机器相关的数据类型。ptrdiff_t类型变量通常用来保存两个指针减法操作的结果。ptrdiff_t通常被定义为long int类型。
5. difference_type
difference_type是signed类型,表示迭代器差距。例如:vector中 typedef ptrdiff_t difference_type。
补充(不是与机器相关的类型):
(1)NULL:
NULL表示空指针,用于表示一个无效的指针,它的值为0(早期C语言的实现中可能有非0空指针,现在已经不用)。对指针置NULL即标记指针无效,可以通过判断指针是否等NULL而防止指针的非法访问。
NULL在C/C++标准库中被定义为一个宏,一般为:
#define NULL ((void*)0) /*C中的“标准”写法,NULL被替换为一个void*类型的指针右值,值等于0;由于是void*类型,可以隐式转化为其它类型的指针。*/
#define NULL 0 //C++,相对C简化定义的原因是C++中void*无法自由隐式转换为其它类型的指针,而字面量0可以隐式转换为指针类型;尽管它实际上可以被作为整数0使用而不引起编译问题,但要注意,从设计目的上而言,NULL应当总是只作为空指针使用。