C++中int/long/pointer长度
来源:互联网 发布:vb replace函数用法 编辑:程序博客网 时间:2024/05/17 02:18
0x00 信仰
很久很久以前,在一个记不清的地方,一个记不清的地方看过一句曾经然我奉为圣经的话:~不论32还是64位平台,C++中指针的长度始终与long类型长度一致~
那些年,也曾单纯,那些年也曾懵懂。最近又看到这个话题,于是写这篇博客,科学的说明也许你坚信的信仰最终只是谎言~
0x01 现实
伟大领袖邓小平说过:实践是检验真理的唯一标准。
在Windows 64位系统下编译运行如下代码
#include <iostream>int main(int argc, char *argv[]){ cout<<"size of long:"<<sizeof(long)<<endl; cout<<"size of int*:"<<sizeof(int*)<<endl;}
输出结果:
size of long:8size of int*:4
0x02 宇宙真理
其实,上面信仰不对,但是也不全错,int/long/potinter的具体长度在c++标准中并没有准确定义,c++标准只说了long不小于int,于是各个系统在设计的时候就有了格子的标准。
- 数据模型
现在常见的系统大致就可以分为ILP32, ILP64, LP64, LLP64四种字长数据模型。
I即表示int,L表示long,P表示Pointer,LL表示long long。
ILP32即int, long, pointer的数据长度都是32位;
ILP64即int, long, pointer的数据长度都是64位;
LP64即long, pointer的数据长度都是64位;
LLP64即long long, pointer的数据长度都是64位。
辨证
由上可以看出,除了LLP64模型的系统,其他系统模型通常都设定long和pointer长度相同。透过本质看现象
常见的系统中,windows32/linux32/unix32都采用ILP32模型,windows64采用LLP64,linux64位采用LP64。也就是说区别就在于64位系统中。
0x03 垮平台代码中存储指针
有时候代码中不得不将某一类型指针对象保存出来以方便传递到别处处理,在32位平台中通常会将指针保存为int,在linux64中尝尝看见大家保存为long,而在win64中我们必须将指针保存为long long类型才行。
但在跨平台编码中,其实我们只需要保证存储pointer的数据类型长度大于pointer长度即可。
比如所有平台中都使用long long 或者int64_t之类的类型来存储指针可以大大提高代码的可移植性。
- C++中int/long/pointer长度
- C语言中各种数据类型的长度 sizeof char, short, int, long, long long
- C语言中int、long int、long long的区别
- C语言中int、long int、long long的区别
- short /int/long长度
- C/C++中int、long、long long取值范围
- short, int, long, long long.长度比较
- C语言中关于int、long int、long long 的区别
- C语言中int与long int的区别
- 关于short int long的长度规定
- 关于short int long的长度规定
- 关于short int long的长度规定
- Byte Short Int Long的长度
- C语言中short、int与long用法总结
- C/C++中int/long/float/double数值转换
- C/C++: short , int , long , long long数据类型选用
- C/C++中各种类型int、long long、double表示范围(最大最小值)
- C++:int ,long , long long类型的范围
- D3DXMATRIX Structure
- 重拾Python 三
- 重装系统后重新配置Hexo
- Coreference Resolution (共指消解)
- Intellij Idea 2016.2 , PyCharm2016.2 激活码
- C++中int/long/pointer长度
- 数据挖掘鄙视题-整理(单选)
- 欢迎使用CSDN-markdown编辑器
- FPGA内部电源管理详解
- 网络协议问题Protocol not found
- POJ2513 -Colored Sticks(The UofA Local 2000.10.14)
- FPGA管脚分配需要考虑的因数
- Android-解决TextView上下留白问题
- 数据挖掘鄙视题-判断题