两个指针变量可以相互赋值吗?
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,都会对指向的地址空间中的数据进行操作。
此程序较为简单,容易看懂,但是在较为复杂的程序中,例如为了提高程序可读性,或者使得代码逻辑更加清晰,使用了两个指针指向同一块地址,无论是哪个指针修改了这块地址空间的内容,结果都是修改了。