C语言 关于size_t和ssize_t的应用与比较

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
喜欢就支持一下吧
点赞5 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容