sizeof和指针
对于sizeof(类或对象)这种形式,如classA1{ public: int a; static int b;A1();~A1();}sizeof计算类或对象在栈中分配的大小,类或对象的静态变量存放在全局数据域,是不会计算在内的,sizeof(A1)=4; 而int main(){ static int a=2; cout<<sizeof(a)<<endl;cout<<sizeof(a=8)<<endl;cout<<a<<endl ;} 结果是4 4 2, sizeof(a) sizeof(a=8)最后都替换成sizeof(int),sizeof(a=8)不参与编译,a的值不会发生变化;sizeof仅对参数或函数的类型进行计算等操作,对参数不会产生任何影响,是个关键字而不是函数;
内存中的数据对齐问题:提高读取速率,
64位系统,这个位数指的是CPU 里面的通用寄存器的数据宽度为64位,也就是说一个地址占二进制位数是64,所以sizeof(double *)==sizeof(int *)==sizeof(char *)==64/8==8
32位系统,同理,他的一个地址占32位二进制空间,sizeof(double *)==sizeof(int *)==sizeof(char *)==32/8==4
其实明白了两个系统的寻址原理就能明白,大体就是这个原因。
地址跟系统有关,但是基本数据类型占的大小是由C语言本身决定。
指针实际上就是地址,因此指针的长度就是地址的位数,在32位XP系统下,指针就是32位,也就是4个字节。
而int等是和编译器的位数有关,
对于16位编译系统,比如TC,int是2字节
对于32位编译系统,比如VC,GCC,int是4字节
sizeof和指针的更多相关文章
- 数组类型与sizeof与指针的引用
以char类型为例: char a[100]; //a类型为char[100] &a类型为 char (*)[100] *a类型为char char *p = a; ...
- 【C++基础】sizeof 数组 指针 空NULL
笔试遇到很多sizeof的小题,博主基础堪忧,怒总结如下,还是要巩固基础啊啊啊! sizeof操作符 对象所占 栈内存空间的大小,单位是字节 关键词:char 数组 指针 结构体 class [注意 ...
- Sizeof面试题
sizeof()功能:计算数据空间的字节数1.与strlen()比较 strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素. ...
- 全面解析sizeof(上) 分类: C/C++ StudyNotes 2015-06-15 10:18 188人阅读 评论(0) 收藏
以下代码使用平台是Windows7 64bits+VS2012. sizeof是C/C++中的一个操作符(operator),其作用就是返回一个对象或者类型所占的内存字节数,使用频繁,有必须对齐有个全 ...
- sizeof 跟 strlen 的区别
1.参数 sizeof是c/c++ 中的一个操作符,其作用是返回对象或数据类型所占的内存字节数. 用法:sizeof(对象).sizeof 对象.sizeof(类型) 如果类型做参数,返回的是该类型所 ...
- C/C++入门基础----指针(1)
指针其实就是一个变量, 和其他类型的变量一样.在32位计算机上, 指针占用四字节的变量.指针与其他变量的不同就在于它的值是一个内存地址,指向内存的另外一个地方, 指针能够直接访问内存和操作底层的数据, ...
- C语言学习004:数组与指针
在C语言中,字符串实际上就是字符数组,在内存中字符串"Shatner"存储的形式是这样的
- sizeof()用法汇总
sizeof()功能:计算数据空间的字节数 1.与strlen()比较 strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素. ...
- sizeof()用法汇总【转载】
转载自:http://www.cnblogs.com/chengxin1982/archive/2009/01/13/1374575.html 参考:http://blog.csdn.net/free ...
随机推荐
- web开发工具软件使用问题记录
一.右键 - 添加Git Bash Here菜单 转自:http://blog.csdn.net/u014527912/article/details/51723735 步骤: 1.通过在“运行”中输 ...
- js-url打开方式
引用自 : 老张的博客 *.location.href 用法: top.location.href="url" 在顶层页面打开url(跳出框架) self.loc ...
- mysql 上传数据到指定字段
新建表prizecode,字段为code varchar(45) not null , usedAt TIMESTAMP;数据存放在 E:\prizecode\ 目录下,下面是上传语句 LOAD DA ...
- SUSE zypper failed to work
记录解决的一个问题. 在SUSE 中zypper 不能使用,错误如下: hostname~ # zypper install make Refreshing service 'packman'.Une ...
- 在Linux上配置xampp后远程访问域名报错
在Linux上配置xampp后远程访问域名报错: New XAMPP security concept: Access to the requested object is only availabl ...
- string&&char 小技巧
关于string =,assign() //赋以新值 swap() //交换两个字符串的内容 +=,append(),push_back() //在尾部添加字符 insert() //插入字符 ...
- mysql备份文件注释乱码处理工具
我们有时候需要做mysql数据库的注释,可是备份出来的是乱码,怎么办呢? 本工具软件来帮你的忙. 将GBK库备份后的文本文件中夹带的UTF8乱码转换为GBK编码,就不再乱码了. http://down ...
- HTML可编辑的select
HTML可编辑的select实现原理还是用select和input伪装成的! <!DOCTYPE html PUBLIC "-//W3C//Dth XHTML 1.0 Transiti ...
- 用jquery编写的分页插件
用jquery编写的分页插件 源码 function _pager_go(total_page) { var page_str = $("#_pager_textbox").val ...
- [php-src]Php扩展的内存泄漏处理思路
内容均以php5.6.14为例. 一. 封装函数时产生 memory leaks. [weichen@localhost www]$ php .php [,] [Tue Jul :: ] Script ...