size_t 类型表示C语言中任何对象所能达到的最大长度。
目的是提供一种可移植的方法来声明与系统中可寻址的内存区域一致的长度。
size_t 用做sizeof 操作符的返回值类型,同时也是很多函数的参数类型,包括malloc 和strlen。
size_t的应用
size_t 在stddef.h头文件中定义。
ssize_t
- ssize_t 和size_t类似,但必需是signed(表示 signed size_t类型), 用来表示可以被执行读写操作的数据块的大小。
size_t 和 int 比较
- size_t在32位架构中定义为:typedef unsigned int size_t;
- size_t在64位架构中被定义为:typedef unsigned long size_t;
- size_t是无符号的,并且是平台无关的,表示0-MAXINT的范围;int为是有符号的;
- int在不同架构上都是4字节,size_t在32位和64位架构上分别是4字节和8字节,在不同架构上进行编译时需要注意这个问题;
- ssize_t是有符号整型,在32位机器上等同与int,在64位机器上等同与 long int;
- 合理使用size_t可以提高程序的可移植性和代码的可读性。
为什么有时候不用int,而是用size_type或者size_t?
与int固定四个字节不同有所不同,size_t的取值range是目标平台下最大可能的数组尺寸,一些平台下size_t的范围小于int的正数范围,又或者大于unsigned int. 使用int既有可能浪费,又有可能范围不够大。
© 版权声明
转载请注明出处,并标明原文链接。
本网站尊重知识产权,如有侵权,请及时联系我们删除。
本站所有原创内容仅用于学习和交流目的,未经作者和本站授权不得进行商业使用或盈利行为。
本网站尊重知识产权,如有侵权,请及时联系我们删除。
本站所有原创内容仅用于学习和交流目的,未经作者和本站授权不得进行商业使用或盈利行为。
THE END
暂无评论内容