首页 > 编程语言 >C++:17---sizeof运算符

C++:17---sizeof运算符

时间:2022-11-01 14:37:25浏览次数:37  
标签:--- cout int 数据类型 运算符 sizeof 指针 运算


  • 功能:以字节位单位,返回一个表达式或一个数据类型所占的字节数
  • 返回值类型:是size_t类型
  • sizeof有无括号:
  • sizeof不加括号,后面不可以直接跟数据类型
  • sizeof加括号,后面既可以跟表达式也可以跟数据类型
  • 注意事项
  • 对引用类型执行sizeof运算得到被引用对象所占空间的大小

  • 对指针执行sizeof运算得到指针本身所占空间大小

  • 对解引用指针执行sizeof运算得到指针指向指向的对象所占空间的大小,指针不需有效

  • 对数组执行sizeof运算得到整个数组所占空间的大小,等价于对数组中所有的元素各执行一次sizeof运算并将结果求和。注意,sizeof运算不会把数组转换指针来处理

  • 对string对象或vector对象执行sizeof运算只返回该类型固定部分的大小,不会计算对象中的元素占用了多少空间



二话不说,来看代码:


#include <iostream>
#include <string>
using namespace std;
int main(){
int a = 12;
short int b = 12;
float c = 12.0f;
double d = 12.333;
long int e = 123;
long long int f = 1233;
char ch = '0';

cout << sizeof a << "," << sizeof b << "," << sizeof c << "," << sizeof d << "," << sizeof e << "," << sizeof f << "," << sizeof ch <<endl;


uint8_t ua = 1;
uint16_t ub = 2;
uint32_t uc = 3;
uint64_t ud = 4;


cout << sizeof ua << "," << sizeof ub << "," << sizeof uc << "," << sizeof ud <<endl;


char* pa = &ch;
int* pb = &a;

cout <<sizeof pa << "," << sizeof pb <<endl;
uint32_t& p = uc;
cout << sizeof p <<endl;

int array[10];
cout << sizeof array <<endl;


string s = "hello world";
string s_empty;
cout << sizeof s << "," << sizeof s_empty << endl;
return 0;
}



标签:---,cout,int,数据类型,运算符,sizeof,指针,运算
From: https://blog.51cto.com/u_14934686/5813613

相关文章

  • Redis:10---List对象
    ​一、列表对象概述   列表类型是用来存储多个有序的字符串,一个列表最多可以存储多个元素。列表是一种比较灵活的数据结构,它可以充当栈和队列的角色,在实际开发上有......
  • C++:44---关键字virtual、override、final
    一、虚函数概念:在函数前面加virtual,就是虚函数虚函数的一些概念:只有成员函数才可定义为虚函数,友元/全局/static/构造函数都不可以虚函数需要在函数名前加上关键字virtual成......
  • C++:45---多态
    一、多态介绍面向对象的核心思想是多态性,其含义是“多种形式”概念:在子类覆盖了父类函数的情况下,用父类的指针(或引用)调用子类对象,或者通过父类指针调用覆盖函数的时候(动......
  • C++(STL):26 ---关联式容器set用法
    set容器都会自行根据键的大小对存储的键值对进行排序,只不过set容器中各键值对的键key和值value是相等的,根据key排序,也就等价为根据value排序。另外,使用set容器......
  • 怎么查小河流名称--河流数据库
    全国最大的河流名称数据库,没有你找不到的当一条河流自上而下不同河段有不同的名称时,一般以下游的河名作为整个河流的名称。当河流在地形图上没有标注名称时,可采用下列方法......
  • C++(STL):06---数值的极值(numeric_limits类)
    一、数值的极值概述数值类型有着与平台相依的极值C++标准规定了各种类型必须保证的最小精度。这些最小值如下图所示: 类型最小长度char1byte(8bits)shortint2bytesint2bytes......
  • C++:51---继承中的构造函数、析构函数、拷贝控制一系列规则
    一、继承中的构造函数根据构造函数的执行流程我们知道:派生类定义时,先执行基类的构造函数,再执行派生类的构造函数拷贝构造函数与上面是相同的原理二、继承中的析构函数根据析......
  • C++:46---绝不重新定义继承而来的non-virtual函数
    一、看一个隐藏non-virtual函数的例子假设classD以public的方式继承于classB,代码如下:classB{public:voidmf();};classD:publicB{};intmain(){Dx;B*pB=&x;pB->......
  • 动态规划-回文串
    回文串是从左到右和从右到左读起来一样的字符串,变种还有回文子序列,区别就是字符可以不连续。求回文串个数、最长回文串、最长回文序列也是典型的二维动态规划问题。我们......
  • C++(STL):05---智能指针之unique_ptr
    一、unique_ptr类头文件:#include<memory>智能指针,是一个模板。创建智能指针时,必须提供指针所指的类型与shared_ptr的不同之处:shared_ptr所指向的对象可以有多个其他shared_p......