永发信息网

指针引用作参数和指针做参数的区别????

答案:3  悬赏:60  手机版
解决时间 2021-01-25 17:33
  • 提问者网友:黑米和小志
  • 2021-01-25 10:29
void f(int *p)和void f(int *&rp)有什么区别?
我知道rp不占内存空间,只是实参的别名,对rp的改变就是对实参的改变。难道指针引用和指针的区别仅仅是一个不占内存一个占内存?
最佳答案
  • 五星知识达人网友:英雄的欲望
  • 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); //主函数 调用
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯