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类型,你马上就知道它代表字节大小或数组索引,而不是错误代码或者是一个普通的算术值。

c++的size_t相关推荐

  1. size_t和int区别

    size_t和int       size_t是一些C/C++标准在stddef.h中定义的.这个类型足以用来表示对象的大小.size_t的真实类型与操作系统有关. 在32位架构中被普遍定义为: ty ...

  2. size_t与ssize_t

    size_t与ssize_t 为了增强程序的可移植性,便有了size_t,它是为了方便系统之间的移植而定义的,不同的系统上,定义size_t可能不一样. l          在32位系统上定义为un ...

  3. C++ size_t 与 size_type区别

    [c++]size_t 和 size_type的区别 为了使自己的程序有很好的移植性,c++程序员应该尽量使用size_t和size_type而不是int, unsigned 1. size_t是全局 ...

  4. unsigned int vs. size_t

    我注意到现代C和C ++代码似乎在任何地方使用size_t而不是int / unsigned int - 从C字符串函数的参数到STL. 我很好奇这个原因及其带来的好处. #1楼 size_t类型是无 ...

  5. C 语言编程 — size_t 的意义与作用

    目录 文章目录 目录 size_t 的作用 size_t 的作用 在 C 语言程序中使用 size_t(size_type)可以提高代码的可移植性.有效性.可读性.实际上,在 K&D C 中并 ...

  6. linux c size_t ssize_t 简介

    总结: 首先,我非常肯定以及确定的告诉你ssize_t是有符号整型,在32位机器上等同与int,在64位机器上等同与long int,有没有注意到,它和long数据类型有啥区别?其实就是一样的.siz ...

  7. 可变参数中size_t遇见的问题

    在修改php扩展Trie时,出现了一个小bug PHP_FUNCTION(trie_filter_load) {Trie *trie;char *path;int path_len;if (zend_ ...

  8. linux中的size_t和ssize_t区别

    一:区别 (1)作用不同 size_t 反映内存中对象的大小(以字节为单位) ssize_t 供返回字节计数或错误提示的函数使用. (2)类型不同 size_t 的定义在: /usr/include/ ...

  9. c语言 sizeof size_t,C/C++中的sizeof运算符和size_t类型的详解

    sizeof的作用 sizeof是c的运算符之一,用于获取操作数被分配的内存空间,以字节单位表示. 这里指的操作数,可以是变量,也可以是数据类型,如int,float等.所以就可以通过它来获取本地c库 ...

  10. 为什么ubuntu64位下C语言for循环不能超过2147483647次?(size_t )

    文章目录 背景 原因 解决办法 背景 2147483647刚好是2^32/2-1,但是不知道为什么循环次数不能超过这个次数 代码: #include <stdio.h>int main() ...

最新文章

  1. Java常用实体类--System类
  2. 64位传参利用方法LibcSearcher使用入门ROPgadget利用
  3. 【模型解读】从“局部连接”回到“全连接”的神经网络
  4. jenkins 下载插件 一直失败_Jenkins. 安装错误: No such plugin: cloudbees-folder
  5. DataSet DataTable操作
  6. [转载] Python日历模块| 使用示例的weekday()方法
  7. 比较大小教案计算机西瓜,比较大小小班教案
  8. 关于MJ刷新的报Too many arguments to function call, expected 0, have *问题
  9. 软件测试基础学习笔记
  10. 【PotPlayer】敲好用的本地视频播放器
  11. xshell 运行python脚本
  12. 数据结构笔记(王道考研) 第八章:排序
  13. 水浴的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  14. Minio入门系列【13】使用WebUploader上传文件到Minio服务器
  15. python中x 什么意思_python中x[::]什么意思
  16. Mycat数据库中间件(史上最详细)
  17. adb cat delay 2 second
  18. Uber 和 Lyft 在德克斯萨大获全胜
  19. .Net core--- IOC
  20. c++奇怪的1179链接错误

热门文章

  1. android学习和广告平台赚钱
  2. windows不支持scp指令解决方案
  3. html中js左右图片切换效果,JS实现图片切换特效
  4. IK分词器原理研磨及源码改造,更适用生产
  5. 短信验证码收不到了怎么办?
  6. 数字人枫灵Lynn,获得江苏省文化产业周刊关注!
  7. spring事务传播机制之《REQUIRED》
  8. 诗与远方:无题(九十六)- 空人空心
  9. 计算机网络与云技术计算,计算机网络云计算技术(原稿)
  10. android 开启wifi代码,Android编程打开WiFi