size_t 类型定义在cstddef
头文件中,该文件是C标准库的头文件
stddef.h的C++版。它是一个与机器相关的unsigned类型,其大小足以保证存储内存中对象的大小。
size_t是标准C库中定义的,在64位系统中为long
unsigned int,非64位系统中为 unsigned int。
socklen_tBSD套接字层的填充。
POSIX开始的时候用的是size_t,Linus Torvalds(他希望有更多的人,但显然不是很多)努力向他们解释使用size_t是完全错误的,因为在64位结构中 size_t和int的长度是不一样的,而这个参数的长度必须和int一致,因为这是BSD套接字
接口标准
一个基本的
无符号整数的C / C + +类型,它是
sizeof操作符返回的结果类型,该类型的大小可选择。因此,它可以存储在理论上是可能的任何类型的数组的最大大小。换句话说,一个指针可以被安全地放进为size_t类型(一个例外是类的
函数指针,但是这是一个特殊的情况下)。 size_t类型通常用于循环、数组索引、大小的存储和地址运算。虽然size_t可以存储一个指针,它的目的是更好地使用另一个
unsigned整数类型uintptr_t。在某些情况下,使用size_t类型是更为有效,比习惯性使用无符号类型的程序会更安全。
size_t是在基于
无符号整数memsize类型的C / C + +的标准库中定义的。C语言中,此类型位于
头文件stddef.h中,而在C++中,则位于cstddef中。
在C++中,设计size_t 就是为了适应多个平台的。size_t的引入增强了程序在不同平台上的
可移植性。size_t是针对系统定制的一种
数据类型,一般是
整型,因为
C/C++标准只定义一最低的位数,而不是必需的固定位数。而且在内存里,
对数的高位对齐存储还是低位对齐存储各系统都不一样。为了提高代码的可移植性,就有必要定义这样的数据类型。一般这种类型都会定义到它具体占几位内存等。当然,有些是
编译器或系统已经给定义好的。经测试发现,在32位系统中size_t是4字节的,而在64位系统中,size_t是8字节的,这样利用该类型可以增强程序的可移植性。
它是一种“
整型”类型,里面保存的是一个整数,就像int、
long那样。这种整数用来记录一个大小(size)。size_t的全称应该是size type,就是说“一种用来记录大小的
数据类型”。
通常我们用
sizeof(XXX)操作,这个操作所得到的结果就是size_t类型。
wchar_t就是wide char type,“一种用来记录一个
宽字符的数据类型”。
而w
char_t则稍有不同。在一些旧的
编译器中,wchar_t也可能是用typedef来实现,但是新的标准中wchar_t已经是C/
C++语言的关键字,wchar_t类型的地位已经和char, int的地位等同了。
在标准
C/C++的语法中,只有int float char bool等基本的数据类型,至于size_t或
size_type都是以后的
编程人员为了方便记忆所定义的一些便于理解的由基本数据类型的变体类型。