复习数据结构的时候看到指针的引用,两年前学的细节确实有点想不起来,于是查了一下网上的资料,并且自己实践了一下,总结了一句话就是:
指针作为参数传给函数,函数中的操作可以改变指针所指向的对象和对象的值,但函数结束后还是会指向原来的对象,若要改变,可用指针的指针或者指针的引用。
ps:对原po的代码稍作修改,看上去更直观些。
1 #include<iostream> 2 using namespace std; 3 4 void foo(int *&t, int *y)//此处是int *t还是int *&t,决定了调用该函数的指针本身会不会被修改。分别跑一下程序即可知。 5 { 6 t = y; 7 //*t = 4; 8 cout << "foo1:" << t << endl; 9 cout << "foo2:" << y << endl; 10 } 11 12 int main() 13 { 14 int num = 4; 15 int num2 = 5; 16 int *p = # 17 int *q = &num2; 18 cout <<"p: "<< p << endl; 19 cout <<"q: "<< q << endl; 20 foo(p, q); 21 cout << "after foo" << endl; 22 cout <<"p: "<< p << endl; 23 cout <<"q: "<< q << endl; 24 cout <<"*p: "<< *p << endl; 25 cout <<