首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >两个指向同一地点的指针?

两个指向同一地点的指针?
EN

Stack Overflow用户
提问于 2017-02-08 01:30:52
回答 5查看 4.4K关注 0票数 0

我似乎在这里找不到答案,但如果这是重复的,我很抱歉。下面是我的问题:当我有两个指向同一位置的指针时,我会更改其中一个的地址(例如指针A),我会(偶然地)更改另一个指针(指针B)的地址吗?还是指针B的位置保持不变?

EN

回答 5

Stack Overflow用户

发布于 2017-02-08 01:32:52

更改指针的内容(相对于所指向的对象)不会影响指向同一对象的其他指针。

票数 5
EN

Stack Overflow用户

发布于 2017-02-08 01:44:34

指针B的位置将保持不变。

因为指针A和指针B是不同的指针,所以它们有不同的内存address.That,这意味着它们是相互独立的,尽管它们都指向相同的内存地址。

但是当您试图更改指针A的内容时要小心,此操作可能会导致指针B成为野生指针

票数 2
EN

Stack Overflow用户

发布于 2017-02-08 01:38:24

您可以看到以下代码的输出:

代码语言:javascript
运行
复制
#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;
}

以下是代码的输出:

代码语言:javascript
运行
复制
0x7ffca3788e40, 0x7ffca3788e40
0x7ffca3788e44, 0x7ffca3788e40

显然,将b指向的地址更改为,与指针c指向的地址无关。

但是当你使用references时,你可能会有一个类似的现象。引用是另一个对象的别名的实体。假设你有

代码语言:javascript
运行
复制
int &ref = a;
ref = 5;

现在,更改变量ref还会使变量a的值发生变化,等于5。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42103126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档