我试图深入学习指针的概念。在下面的代码中,我创建一个数组,并创建一个指向每个元素的指针。
int bucky[5];
int *bp0 = &bucky[0];
int *bp1 = &bucky[1];
int *bp2 = &bucky[2];
cout<<"bp0 is at memory address:"<<bp0<<endl;
cout<<"bp1 is at memory address:"<<bp1<<endl;
cout<<"bp2 is at memory address:"<<bp2<<endl;
这些是分配给数组元素的内存。
以我有限的c++知识,我知道内存是连续分配给数组的。但是仔细观察输出,bp0看起来不合适。
据我说,bp0应该位于
0x0018ff36
。还是0x0018ff3c , 0x0018ff40 , 0x0018ff44
在CPU中是连续的?那么是否有可能没有在连续过程中分配两个连续的内存分配?
最佳答案
+---+---+---+---+---+---+---+---+---+---+---+---+
| bp0 | bp1 | bp2 |
+---+---+---+---+---+---+---+---+---+---+---+---+
0x0018ff3c d e f 40 1 2 3 4 5 6 7 8
假设int的大小为4个字节,并且bp0指向0x0018ff3c。
bp1 = bp0 + 4 = 0x0018ff40
bp2 = bp1 + 4 = 0x0018ff44