void f(int *p)和void f(int *&rp)有什么区别?
我知道rp不占内存空间,只是实参的别名,对rp的改变就是对实参的改变。难道指针引用和指针的区别仅仅是一个不占内存一个占内存?
指针引用作参数和指针做参数的区别????
答案:3 悬赏:60 手机版
解决时间 2021-01-25 17:33
- 提问者网友:黑米和小志
- 2021-01-25 10:29
最佳答案
- 五星知识达人网友:英雄的欲望
- 2021-01-25 11:05
楼上的没说全,你都知道引用是别名,那就应该知道在函数内部可以修改rp指向的地址,以前指向的是a,你可以把他改成指向b;传指针是传入参数的一份拷贝,在函数内部修改指针指向的地址,并不会修改原实参所指向的地址。可以写一个简单的程序测试下,在函数内部修改形参所指向的地址,调用完成后,看看实参指向的地址是否改变!传指针不会改变,传引用的会!动手实验下,记得更劳靠!
全部回答
- 1楼网友:七十二街
- 2021-01-25 12:57
这很好理解,别想多了。
int* 也就是一种类型而已,所以你的问题和 void f2(int p) 与 void f2(int &rp)有什么分别得到的回答是一样的。rp当然要点内存空间,所占空间是一个指针的大小。
简单的来说,比如参数是 int *ptr; 假设其内容为0x12345678,内容指向的值为5,其在内存中的地址为0x00112233;
那么调用第一个f传入的值是0x12345678,第二个传入的是0x00112233。
- 2楼网友:拜訪者
- 2021-01-25 12:03
指针和引用在被作为参数传递时的区别是:
前者通过对地址的操作进而改变实参
后者是以别名的方式对实参的直接处理达到同样效果。
两者的共同点就是,当实参传进来时,都能改变实参的值
例:(引用)
int swap(int& a,int& b); // 函数申明
swap(m,n); //主函数 调用
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯