c++的size_t
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相关推荐
- size_t和int区别
size_t和int size_t是一些C/C++标准在stddef.h中定义的.这个类型足以用来表示对象的大小.size_t的真实类型与操作系统有关. 在32位架构中被普遍定义为: ty ...
- size_t与ssize_t
size_t与ssize_t 为了增强程序的可移植性,便有了size_t,它是为了方便系统之间的移植而定义的,不同的系统上,定义size_t可能不一样. l 在32位系统上定义为un ...
- C++ size_t 与 size_type区别
[c++]size_t 和 size_type的区别 为了使自己的程序有很好的移植性,c++程序员应该尽量使用size_t和size_type而不是int, unsigned 1. size_t是全局 ...
- unsigned int vs. size_t
我注意到现代C和C ++代码似乎在任何地方使用size_t而不是int / unsigned int - 从C字符串函数的参数到STL. 我很好奇这个原因及其带来的好处. #1楼 size_t类型是无 ...
- C 语言编程 — size_t 的意义与作用
目录 文章目录 目录 size_t 的作用 size_t 的作用 在 C 语言程序中使用 size_t(size_type)可以提高代码的可移植性.有效性.可读性.实际上,在 K&D C 中并 ...
- linux c size_t ssize_t 简介
总结: 首先,我非常肯定以及确定的告诉你ssize_t是有符号整型,在32位机器上等同与int,在64位机器上等同与long int,有没有注意到,它和long数据类型有啥区别?其实就是一样的.siz ...
- 可变参数中size_t遇见的问题
在修改php扩展Trie时,出现了一个小bug PHP_FUNCTION(trie_filter_load) {Trie *trie;char *path;int path_len;if (zend_ ...
- linux中的size_t和ssize_t区别
一:区别 (1)作用不同 size_t 反映内存中对象的大小(以字节为单位) ssize_t 供返回字节计数或错误提示的函数使用. (2)类型不同 size_t 的定义在: /usr/include/ ...
- c语言 sizeof size_t,C/C++中的sizeof运算符和size_t类型的详解
sizeof的作用 sizeof是c的运算符之一,用于获取操作数被分配的内存空间,以字节单位表示. 这里指的操作数,可以是变量,也可以是数据类型,如int,float等.所以就可以通过它来获取本地c库 ...
- 为什么ubuntu64位下C语言for循环不能超过2147483647次?(size_t )
文章目录 背景 原因 解决办法 背景 2147483647刚好是2^32/2-1,但是不知道为什么循环次数不能超过这个次数 代码: #include <stdio.h>int main() ...
最新文章
- Java常用实体类--System类
- 64位传参利用方法LibcSearcher使用入门ROPgadget利用
- 【模型解读】从“局部连接”回到“全连接”的神经网络
- jenkins 下载插件 一直失败_Jenkins. 安装错误: No such plugin: cloudbees-folder
- DataSet DataTable操作
- [转载] Python日历模块| 使用示例的weekday()方法
- 比较大小教案计算机西瓜,比较大小小班教案
- 关于MJ刷新的报Too many arguments to function call, expected 0, have *问题
- 软件测试基础学习笔记
- 【PotPlayer】敲好用的本地视频播放器
- xshell 运行python脚本
- 数据结构笔记(王道考研) 第八章:排序
- 水浴的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- Minio入门系列【13】使用WebUploader上传文件到Minio服务器
- python中x 什么意思_python中x[::]什么意思
- Mycat数据库中间件(史上最详细)
- adb cat delay 2 second
- Uber 和 Lyft 在德克斯萨大获全胜
- .Net core--- IOC
- c++奇怪的1179链接错误