首页 > 其他分享 >size_t

size_t

时间:2024-02-17 20:59:16浏览次数:22  
标签:typedef int unsigned long 64 size

文章内容参考:

size_t 数据类型-CSDN博客

定义

是一些C/C++标准在stdef.h中定义的,其目的在于方便不同系统之间的移植。

size_t被用来表示C/C++中任何对象所能达到的最大长度,本身是无符号整数类型

size_t的声明是实现相关的,它出现在一个或多个标准头文件中,比如stdio.hstdlib.h,典型定义如下:

#ifndef _SIZE_T_
#define _SIZE_T_
typedef unsigned int size_t;
#endif

需要注意的是:在不同的系统上,size_t的定义可能不一样,在32位系统上定义为unsigned int,而在64位系统上定义为unsigned long,因此其长度并不固定,而是取决于平台,这是为了提供一种可移植的方法来声明与系统中可寻址的内存区域一致的长度。

用途

size_t在数组下标内存管理函数之类的地方广泛使用。例如:

size_t被用作sizeof操作符的返回值类型。此外,它也是很多函数的参数类型,例如mallocstrlen

注意事项

  • size_t是无符号整数。
  • size_t的实际长度取决于具体实现,通常在32位系统上长度为32位,而在64位系统上长度为64位。一般来说,size_t的最大长度为SIZE_MAX

ssize_t

和size_t类似,唯一的区别在于ssize_t是有符号的。

16位、32位、64位机器的区别

char short int long long long 指针
16位 1B 2B 2B 4B 2B
32位 1B 2B 4B 4B 8B 4B
64位 1B 2B 4B 8B 8B 8B

编程中对于整数类型的注意事项

  • 为了保证平台的通用性,尽可能不使用long long,这是因为16位操作系统中long long不存在。
  • 在使用整数类型时,尽可能使用stdlib.h中定义的类型,它们是通过typedefint进行了定义,尽可能地避免了跨平台字长不同的问题:
    • int8_t : typedef signed char;
    • uint8_t : typedef unsigned char;
    • int16_t : typedef signed short ;
    • uint16_t : typedef unsigned short ;
    • int32_t : typedef signed int;
    • uint32_t : typedef unsigned int;
    • int64_t : typedef signed long long;
    • uint64_t : typedef unsigned long long;

intptr_t

在使用int时,也可以使用intptr_t来保证平台的流动性,它在不同的平台上编译时的长度不同,但都是标准的平台字长。例如在64位机器中,其长度为8字节;而在32位机器中,其长度为4字节。使用它可以安全地进行整数和指针之间的转换运算,也就是说:当需要使用指针作为整数运算时,将其转化为intptr_t进行运算才是安全的。

该类型定义于stddef.h头文件中:

#if _WORDSIZE == 64
	typedef long int intptr_t;
#else
	typedef long int intptr_t;
#endif

它也有相应的无符号类型:uintptr_t

标签:typedef,int,unsigned,long,64,size
From: https://www.cnblogs.com/beasts777/p/18018366

相关文章

  • (python)代码学习||2024.2.3||题目是codewars上的【Validate Sudoku with size `NxN`
    题目的要求是写一个Sudoku类,类中要有一个实例函数判断传给对象的二维数组是否符合数独规则题目链接:https://www.codewars.com/kata/540afbe2dc9f615d5e000425/python下面是写完题后看到的别人的解决方法fromitertoolsimportchainclassSudoku(object):def__init__......
  • strlen、length、size、sizeof的应用场景
    1、区别sizeof()的值在编译时即计算好了,参数可以是指针、数组、类型、对象、函数等。sizeof(指针)=指针大小。sizeof(数组名)=数组占用总空间。sizeof(类型)=类型字节对齐后占用总空间。sizeof(函数)=函数的返回类型所占的空间大小。函数的返回类型......
  • css中的resize设置、高度没有对齐、表单在校验、边框发生重叠
    小知识点汇总css❓:css中的resize设置......
  • 对于类对象的size
    对于类来说,可以使用sizeof运算符来计算其占用的内存空间大小。sizeof运算符返回的是一个对象或类型所占用的字节数。当类的成员变量是固定的、非动态申请内存分配的时候,可以通过sizeof运算符来计算类的大小。sizeof运算符会计算类的所有成员变量的大小,并加上任何可能的填充......
  • [LMXOI Round 1] Size
    \(\sumd_i<=5*10^7\)一定是解题的突破口;可是,该怎么利用这个条件呢?不妨更进一步——考虑数据的特征,发现数字的种类是有限的点击查看代码#include<bits/stdc++.h>usingnamespacestd;intd[2000005],r[2000005];map<int,longlong>q;intread1(){ charcc=getchar()......
  • 深入了解Java中的Map.size方法
    本文转载自:https://www.python100.com/html/54940.html在Java中,Map是一个非常重要和常用的数据结构,它用于存储键值对映射的集合。在Map中,size()这个方法是用来获取集合大小的,我们经常使用它来获取键值对映射的数量。但是,你知道吗?实际上,Map.size()的实现和使用也是有许多细节和注......
  • 如何修改Azure Kubernetes Services节点池VM Size
    如何修改AzureKubernetesServices节点池大小今天和大家聊聊AzureKubernetesServices(AKS)修改节点池VMSize的问题。这也是很多客户在使用AKS的过程中都会遇到的一个问题。随着AKS群集使用时间的增长,很多客户都会面临扩展或修改AKS节点池VMSize的问题,具体的原因大致如下:性能优化......
  • P10114 [LMXOI Round 1] Size 题解
    题目链接:[LMXOIRound1]Size挺有意思的诈骗题,其实这类题都喜欢批一个外壳,例如数据范围提示之类的。记得以前遇到的很多诈骗题,有一道cf的高分题,问的是区间出现次数的次数\(mex\),这玩意一开始感觉好难,出现次数还简单,还要考虑次数的次数,所以带修莫队的时候,一直没法确定怎么解决......
  • 如果在循环中不改变vector的大小,C++编译器是否会将.size()优化为常数?
      在C++中,可以使用以下代码计算vector<int>中所有元素的和:vector<int>v={1,3,7,9};sums=0;for(inti=0;i<v.size();i++){sums+=v[i];}  这是一段很普通的代码,问题在于:在这段代码中,v.size()会在循环开始前仅计算一次?还是会在每次循环中都计算一次......
  • 深入解析C++中sizeof和strlen的奥秘:区别、应用与技巧全揭秘!
     sizeof 和 strlen 是C++中用于处理字符串的两个不同的操作符,它们的作用和使用场景有很大的区别。sizeof操作符:区别:sizeof 是一个运算符,不是一个函数,用于获取一个类型或变量的字节大小。对于数组,sizeof 返回整个数组的字节大小。对于指针,sizeof 返回指针本身的......