c++ - 更改指向数组的指针以获取特定的数组元素

标签 c++ pointers

我理解指针和引用的总体含义(或者至少我认为我理解),我也理解当我使用 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/

相关文章:

c++ - RValues 的初始化列表

C数组指针段错误

c - 指向未知大小的现有二维数组的指针?

c++ - 运行存储在 `std::wstring` 中的控制台命令

c++ - OpenGL 白色空白屏幕且无响应

c++ - BOOST_FUSION_ADAPT_STRUCT 没有采用正确数量的参数

涉及指针的 C 程序输出

pointers - 为什么 Deref::deref 的返回类型本身就是一个引用?

冲突类型错误和整数指针,没有强制转换警告 C

c++ - “正则表达式”类型无法识别