C/C++中的指针变量可以相互赋值,使得它们指向同一块地址空间

两个指针变量可以相互赋值吗?
int *p, *q;
p=q;
这样写是什么意思?是p指向q吗?
答:1.两个指针变量之间可以相互赋值,p和q都是int类型的指针。
p=q表示将q所指向的int类型变量的地址赋给p
2.两个都是指针,所以是p的值等于q
如果p不是指针,那么p=q是p等于q指向的值
3.可以这样写,前提好像是
q有确定的地址指向,然后用此语句赋值则表示,指针p和指针q指向相同的地址空间。
4.指针也只不过是一个变量而已,只不过里面存放的是地址

以上内容来源
示例:

#include<iostream>
using namespace std;
int main()
{
	int *pa;
	int a[8]={1,2,3,4,5,6,7,8};
	pa=a;
	int *pb;
	pb=pa;
	*(pb+3)=98;
	cout<<a[3]<<endl;
	*(pa+6)=0;
	cout<<a[6]<<endl;
	
 }  

输出结果:
98
0

可见,pb和pa指向了同一块地址空间,用pb或者pa,都会对指向的地址空间中的数据进行操作。
此程序较为简单,容易看懂,但是在较为复杂的程序中,例如为了提高程序可读性,或者使得代码逻辑更加清晰,使用了两个指针指向同一块地址,无论是哪个指针修改了这块地址空间的内容,结果都是修改了。


版权声明:本文为deniece1原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。