size_t的说明
定义:size_t是一种数据相关的无符号类型,它被设计得足够大以便能够存储内存中对象的大小。
size_t是标准C库中定义的,应为unsigned int(占用4字节的内存空间),在64位系统中为long unsigned int(占用8字节的内存空间)
它是一种“整型”类型,里面保存的是一个整数,就像int, long那样。这种整数用来记录一个大小(size)。size_t的全称应该是size type,就是说“一种用来记录大小的数据类型”。
通常我们用sizeof(XXX)操作,这个操作所得到的结果就是size_t类型。
在需要通过数组下标来访问数组时,通常建议将下标定义size_t类型,因为一般来说在进行下标访问时,下标都是正的。当然,也不是所有的下标访问操作下标都是正的,比如以下代码:
int a[10]={1,2,3,4,5,6,7,8,9,10};
int *ptr = &(a[4]);
cout<<ptr[-2]<<endl;
这段代码中对ptr进行了下标访问,并且下标是负的,但是这个访问并不是错误的,执行的结果是输出3。
size_t的作用
某些情况下正确的使用size_t可以提高程序的可移植性和有效性
参数中带有size_t的函数通常会含有局部变量用来对数组的大小或者索引进行计算,在这种情况下,size_t是个不错的选择。
适当地使用size_t还会使你的代码如同自带文档。当你看到一个对象声明为size_t类型,你马上就知道它代表字节大小或数组索引,而不是错误代码或者是一个普通的算术值。