注 : 这仅仅是我的测试结论:
#include <iostream> using namespace std;
int main(){ int * i = new int; int * i2 = new int; cout << i << endl; cout << i2 << endl; *i = i2 - i; cout << *i << endl; } [vicky@localhost chapt6]$ g++ pointExap2.cpp [vicky@localhost chapt6]$ ./a.out 0x8049b58 0x8049b68 4 理解:实际上b68 – b58 = 10.10是16进制的,转换为10进制就是16.而4表示的是4个4byte.也就是16. 综合上面2个例子,我的理解是linux中2个同类型的数据,在内存中的地址相隔2.5个数据类型的长度.至于为什么是2.5就是避免指针在增加后于同类型的另外个数据内存相同.(错误的推论,正确推论见下.)
证明上述推测: #include <iostream> using namespace std;
int main(){ double * i = new double(1.0); cout << sizeof(*i) << endl; cout << "-------" << endl; double * i2 = new double(2.5); cout << i << endl;
|