void f(int *p)和void f(int *&rp)有什么区别? 我知道rp不占内存空间,只是实参的别名,对rp的改变就是对实参的改变。难道指针引用和指针的区别仅仅是一个不占内存一个占内存?
2012-10-24 17:48
提问者采纳
楼上的没说全,你都知道引用是别名,那就应该知道在函数内部可以修改rp指向的地址,以前指向的是a,你可以把他改成指向b;传指针是传入参数的一份拷贝,在函数内部修改指针指向的地址,并不会修改原实参所指向的地址。可以写一个简单的程序测试下,在函数内部修改形参所指向的地址,调用完成后,看看实参指向的地址是否改变!传指针不会改变,传引用的会!动手实验下,记得更劳靠!
-
提问者评价
-
谢谢!
评论
23
0
2012-10-24 17:37
网友采纳
这很好理解,别想多了。 int* 也就是一种类型而已,所以你的问题和 void f2(int p) 与 void f2(int &rp)有什么分别得到的回答是一样的。rp当然要点内存空间,所占空间是一个指针的大小。 简单的来说,比如参数是 int *ptr; 假设其内容为0x12345678,内容指向的值为5,其在内存中的地址为0x00112233; 那么调用第一个f传入的值是0x12345678,第二个传入的是0x00112233。