两个指针共用一个地址,他们所指向的数值一定一样吗
时间: 2023-07-25 17:17:29 浏览: 109
计算机二级《C语言》辅导笔记:结构体与共用体.docx
如果两个指针共用一个地址,它们所指向的数值不一定相同。这是因为指针本身只是一个变量,它存储的是一个地址,而不是实际的值。如果两个指针变量存储的地址相同,它们所指向的实际值也可能相同,也可能不同,这取决于这个地址处存储的值是什么。
例如,假设有如下代码:
```c++
int a = 10;
int* p1 = &a;
int* p2 = &a;
```
这里定义了一个整型变量`a`,并分别用指针`p1`和`p2`指向了它的地址。由于`p1`和`p2`都指向了`a`的地址,因此它们所指向的值是相同的,都是`10`。
但是,如果我们修改了`a`的值,例如:
```c++
a = 20;
```
那么`p1`和`p2`所指向的值也会发生变化,变为`20`。
另外,如果我们将一个指针的值赋给另一个指针,那么它们也会共用同一个地址,例如:
```c++
int* p3 = p1;
```
这里将`p1`的值赋给了`p3`,因此`p3`和`p1`指向的是同一个地址。但是,由于指针变量本身的值不影响所指向的实际值,因此`p3`和`p1`所指向的值仍然是相同的,都是`20`。
阅读全文