我理解指针和引用的整体含义(或者至少我认为我这样做),我也理解当我使用new时我会动态分配内存.
我的问题如下:
如果我要使用cout << &p
,它将显示"虚拟内存位置" p
.有没有办法可以操纵这个"虚拟内存位置"?
例如,以下代码显示了int
s 的数组.
如果我想显示值,p[1]
并且我知道"虚拟内存位置" p
,我可以以某种方式做" &p + 1
"并获得p[1]
with 的值,cout << *p
现在指向数组中的第二个元素吗?
int *p; p = new int[3]; p[0] = 13; p[1] = 54; p[2] = 42;
KTC.. 8
当然,您可以操纵指针来访问数组中的不同元素,但是您需要操纵指针的内容(即p指向的地址),而不是指针本身的地址.
int *p = new int[3]; p[0] = 13; p[1] = 54; p[2] = 42; cout << *p << ' ' << *(p+1) << ' ' << *(p+2);
每次加法(或减法)表示数组中的后续(先前)元素.如果p指向地址为12345 的4字节变量(例如典型的32位PC上的int),则p + 1将指向12349,而不是12346.注意您要在取消引用之前更改p包含的值访问它指向的内容.
当然,您可以操纵指针来访问数组中的不同元素,但是您需要操纵指针的内容(即p指向的地址),而不是指针本身的地址.
int *p = new int[3]; p[0] = 13; p[1] = 54; p[2] = 42; cout << *p << ' ' << *(p+1) << ' ' << *(p+2);
每次加法(或减法)表示数组中的后续(先前)元素.如果p指向地址为12345 的4字节变量(例如典型的32位PC上的int),则p + 1将指向12349,而不是12346.注意您要在取消引用之前更改p包含的值访问它指向的内容.