给指针只能传地址,不能传值.否则要做强制类型转换
#include<iostream>
using namespace std;
int g =300;
void print(int p,int q)
{
cout<< p<< endl<< q<< endl;
}
void set(int*&p,int* q)
{
p=&g;// p是引用类型,可以改变传进参数的指向
q=&g;// q不会
}
int main()
{
int a =10, b=20;
int*pa=&a,*pb=&b;
print(a, b);
cout<< pa<< endl<< pb<< endl;
set(pa, pb); // pa现在指向g,但pb还是指向b,这就是引用和非引用的差别
print(a, b);
print(*pa,*pb);
return 0;
}
int
*&p是指针的引用,不会为p开辟空间,只是一个名字,此时相当直接对pa操作,后者开辟了个临时指针,得到pa的地址,根据指针指向地址修改pa所指向的值!两者效果是一样,但具体的实际过程有区别!
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余1页未读,立即下载