我理解指针和引用的总体含义(或者至少我认为我理解),我也理解当我使用 new 时我是在动态分配内存。
我的问题如下:
如果我使用 cout << &p
, 它会显示 p
的“虚拟内存位置” .
有没有一种方法可以操纵这个“虚拟内存位置?”
例如,下面的代码显示了一个数组 int
如果我想显示 p[1]
的值我知道 p
的“虚拟内存位置” ,我能以某种方式做“&p + 1
”并获得p[1]
的值吗?与 cout << *p
, 现在将指向数组中的第二个元素?
int *p;
p = new int[3];
p[0] = 13;
p[1] = 54;
p[2] = 42;
最佳答案
当然,您可以操纵指针来访问数组中的不同元素,但是您需要操纵指针的内容(即 p 指向的地址),而不是指针本身的地址.
int *p = new int[3];
p[0] = 13;
p[1] = 54;
p[2] = 42;
cout << *p << ' ' << *(p+1) << ' ' << *(p+2);
每次加法(或减法)表示数组中的后续(先前)元素。如果 p 指向地址为 12345 的 4 字节变量(例如 int 在典型的 32 位 PC 上),则 p+1 将指向 12349,而不是 12346。请注意,您要更改的值在取消引用它以访问它指向的内容之前 p 包含的内容。
关于c++ - 更改指向数组的指针以获取特定的数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/107294/