C++ sizeof 操作符的用法总结
在VC中,sizeof有着许多的用法,而且很容易引起一些错误。下面根据sizeof后面的参数对sizeof的用法做个总结。
A.参数为数据类型或者为一般变量:
例如sizeof(int),sizeof(long)等等。
这种情况要注意的是不同系统系统或者不同编译器得到的结果可能是不同的。
例如int类型在16位系统中占2个字节,在32位系统中占4个字节。
B.参数为数组或指针:
int a[50]; //sizeof(a)=4*50=200;求数组所占的空间大小
int *a=new int[50];// sizeof(a)=4; a为一个指针,sizeof(a)是求指针的大小,在32位系统中,当然是占4个字节。
C.参数为结构或类:
Sizeof应用在类和结构的处理情况是相同的,需要考虑字节对齐(参加另一篇文章:C++自定义结构体和类 内存对齐)。另外有几点需要注意:
第一、结构或者类中的静态成员不对结构或者类的大小产生影响,因为静态变量的存储位置与结构或者类的实例地址无关。
第二、没有成员变量的结构或类(非虚)的大小为1,因为必须保证结构或类的每一个实例在内存中都有唯一的地址。
第三、包含虚函数的类或者虚继承的类,需要算上虚表指针的占的4个字节。
下面举例说明:
Class Test{int a;static double c};//sizeof(Test)=4.
Test *s;//sizeof(s)=4,s为一个指针。
Class test1{ };//sizeof(test1)=1;
Class test2{ virtual void print(){}};//sizeof(test2)=4;
参考 http://blog.csdn.net/garfield2005/article/details/7648430
C++ sizeof 操作符的用法总结相关推荐
- sizeof,strlen用法详解
sizeof 前向声明: sizeof,一个其貌不扬的家伙,引无数菜鸟竟折腰,小虾我当初也没少犯迷糊,秉着"辛苦我一个,幸福千万人"的伟大思想,我决定将其尽可能详细的总结一下. 但 ...
- 【C语言】运算符与操作符的用法全面汇总(非常有用)
一.'->'的用法 "->"是一个整体,它是用于指向结构体子数据的指针,用来取子数据.换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么 ...
- Android RxJava(一) create操作符的用法和源码分析
RxJava(一) create操作符的用法和源码分析 转载于:https://www.cnblogs.com/zhujiabin/p/7291901.html
- php 对象的操作符,php面向对象之操作符'::'的用法简述
什么是操作符"::"? 操作符"::"相比伪变量$this只能在类的内部使用来说更为强大.操作符"::"可以在没有任何声明任何实例的情况下访 ...
- c语言中sizeof函数的用法,sizeof函数怎么用 sizeof函数的使用方法
sizeof函数是pascal语言当中的一种内存容量度量的函数,这一个函数计算得到的结果是返回一个变量或者一个类型的大小;在c语言当中,sizeof函数这是一个能够判断数据类型,或者是表达式长度的一个 ...
- sizeof函数的用法
sizeof函数的用法: 1.sizeof()函数是用来计算变量所占内存空间的大小,单位是字节(byte) 举例如下: #define _CRT_SECURE_NO_WARNINGS #include ...
- c语言中sizeof函数的作用是,c语言中sizeof函数的用法
C语言sizeof函数如何使用? 怎样利用sizeofCSS布局HTML小编今天和大家分享各种数据类型占用的字节数? (1)sizeof不是函数,它只是一个操作符(operator). (2)size ...
- C语言 sizeof操作符详解
sizeof,一个其貌不扬的家伙,引无数菜鸟竟折腰,小虾我当初也没少犯迷糊,秉着" 辛苦我一个,幸福千万人"的伟大思想,我决定将其尽可能详细的总结一下. 但当我总结的时候才发现,这 ...
- sizeof 操作符详解
1. 定义: sizeof是何方神圣? sizeof 乃 C/C++ 中的一个操作符(operator)是也.简单说其作用就是返回一个对象或者类型所占的内存字节数. MSDN上的解释为: The si ...
最新文章
- 好记性不如烂笔杆-android学习笔记十四 EditText 画行,解决光标压线问题
- Mysql 远程登录及常用命令
- 【iOS-cocos2d游戏引擎开发之一】搭建cocos2d游戏引擎环境,创建第一个HelloWorld!...
- CentOS7中离线安装Docker与卸载
- mysql 5.7 配置多实例 — 独立配置文件方式
- html5 canvas图文编辑器源码_5个微信编辑器,再也不用为公众号发愁啦
- python画一条水平直线(matplotlib)
- 修改了xml要不要重新起服务器,关于设置:Eclipse每次运行项目时都会修改server.xml(运行-在服务器上运行)...
- 计算机硬件性能关联性,计算机硬件系统组成课堂教学有效研究结题报告.ppt
- 【Java】JDK8新特性之函数式接口
- java学习二---对象和内存管理
- Movie播放Gif,完美实现屏幕适配
- 51Nod-1134 最长递增子序列【LIS】
- w ndows7旗舰版镜像下载,win7旗舰版32位原版iso
- 挥手夕阳无限美-15年终总结
- Ubuntu中挂载使用nas服务器
- 高效文件搜索工具Everything/Listary
- Add-Migration
- OCR:通用数码管图像识别训练和使用
- Flutter开发的抖音国际版
热门文章
- AI吉尼斯:那些你不知道的人工智能之“最”
- 40 万年薪招应届生?OPPO 狂揽芯片人才,应届生招聘行情究竟如何?
- 腾讯——这可是一只“骨骼清奇”的狗
- 漫画:为什么计算机用补码存储数据?
- 再见,工资!程序员工资统计平均14404元,网友:又跌了!
- 安卓constraintLayout中app:srcCompat设置的图片显示不出来
- 区块链应用 | 不知道什么时候起,满世界都在谈区块链的事情
- 3proxy 使用指北
- Sicily 1153: 马的周游问题(DFS+剪枝)
- Linux服务器init 5启动图形界面,报错Retrigger failed udev events的解决方法