我似乎在这里找不到答案,但如果这是重复的,我很抱歉。下面是我的问题:当我有两个指向同一位置的指针时,我会更改其中一个的地址(例如指针A),我会(偶然地)更改另一个指针(指针B)的地址吗?还是指针B的位置保持不变?
发布于 2017-02-07 17:32:52
更改指针的内容(相对于所指向的对象)不会影响指向同一对象的其他指针。
发布于 2017-02-07 17:44:34
指针B的位置将保持不变。
因为指针A和指针B是不同的指针,所以它们有不同的内存address.That,这意味着它们是相互独立的,尽管它们都指向相同的内存地址。
但是当您试图更改指针A的内容时要小心,此操作可能会导致指针B成为野生指针!
发布于 2017-02-07 17:38:24
您可以看到以下代码的输出:
#include <iostream>
int main(int argc, char **argv){
int a = 3, d = 4;
int *b = &a, *c = &a;
std::cout << b << ", " << c << std::endl;
b = &d;
std::cout << b << ", " << c << std::endl;
}
以下是代码的输出:
0x7ffca3788e40, 0x7ffca3788e40
0x7ffca3788e44, 0x7ffca3788e40
显然,将b
指向的地址更改为,与指针c
指向的地址无关。
但是当你使用references
时,你可能会有一个类似的现象。引用是另一个对象的别名的实体。假设你有
int &ref = a;
ref = 5;
现在,更改变量ref
还会使变量a
的值发生变化,等于5。
https://stackoverflow.com/questions/42103126
复制相似问题