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