引用传指针
『壹』 引用传值和指针传值的区别
首先要搞清楚指针和引用区别。引用只是相当于一个变量的别名而已,并不是一个具体的对象,在内存中并不会分配空间。而指针是具体一个对象,声明一个对象时会在内存中为指针也分配空间。当普通变量作为形参传值时,只是将该变量的值传给函数,在函数内部不管如何变化都不会改变改变量的值。但是当引用传值时,在函数内部如果对形参做改变的话就会对该变量做改变,此时的形参相当于该变量的一个别名,对这个别名做出的改变就相当于对该变量做出改变。当指针作为形参向函数传值的时候是传的改变量的地址,所以在函数内部对该地址的内容做出改变就相当于对该变量的改变。
不知这样解释楼主明白不,不明白可以接着追问,望楼主采纳。
『贰』 c++ 怎么用引用传递 传 数组 ,怎么用指针传递传数组 求大神。 ,,,,
1 .函数定义:void f1(int *b[],int i) 函数调用 :f1(b,i);
你有没有发现 b是一个指向指针的指针了,用指针,你应该这样写:
函数定义:void f1(int *b,int i) 函数调用 :f1(&b,i);表示函数定义里边的b指向main函数里边 的 b;
2.用引用:函数定义:void f1(int* &b,int i) 函数调用 :f1(b,i);表示指针的引用。void f1(int &b[],int i)你这样写,就不对了吧,引用的指针。没有这样写的啊。
注意,形参和实参是不一样的。void f1(int *b,int i) 函数调用 :f1(b,i);如果你这样写,只是把main的b赋值个f1的b。并不是main函数里的b的本身。
『叁』 C++中使用指针、引用进行参数传递
这是经典的C++问题
1、常规情况
函数参数传递是所谓的“值传递”。啥意思,就是传的只是值,而不是变量自己以身相许。上面的例子来说,main中的ab传递给函数的ab发生了什么呢,是main中的ab把值传递给了函数的ab,这是四个变量!!!main的ab和swap的ab不是一码事!!!当swap通过传值得到a5b10后,在swap中会互换,但是main的中的ab怎么会变呢?他们传值完毕后就没有关系了!
2、引用
什么叫引用?引用时变量的别名,也就是引用不是一个独立的变量,只能依附于其他变量。你的例子中swap中没有ab两个变量,只有main中ab的两个别名,只是别名碰巧也叫ab。在swap中对swap的ab的任何操作,本质上操作的都是main的ab!想想一下一个人在mian中叫张三,脸上有胡子。他的小名叫狗剩。在swap中我们说,吧狗剩的胡子刮了。然后回到main中,张三同学的额胡子有没有?当然没有了
3、指针
指针存放对象的地址。在你的例子中,swap中的ab和main中的ab的关系式,swap是mian中ab的地址。想想一下,mian中的ab地址为AB,在swap中我们说吧A地址的家伙变为100,B地址的变为1000.请问mian中变了没有?当然会变!!
这个问题关键是理解第一个部分,swap中的ab和mian中的ab是独立的四个变量
『肆』 怎么把传指针改成传引用啊
void BubbleSort(int *p,int n)
改成
void BubbleSort(int (&p)[9],int n)
按引用传递要求形参指定数组大小,不如指针
『伍』 指针传递引用传递
只能作输入的时候才加const
加了const就是不能改变的,不能做输出参数`
如:fun( const int& in, int& out )
// out 可作为输入/输出参数,in则不可,只能作输入参数`
『陆』 传指针和传指针引用的区别/指针和引用的区别(
指针:(通俗理解即为一个变量在内存中的编号(地址))
例1:int b = 2;
int *p = &b;
以上例子就是将b变量在内存中的地址赋值给这个指针变量p, 意味着p的值就是变量b的地址。
指针变量:自己的值(指针变量本身的内容)是某个变量的地址
例1中的p就是指针变量
变量值:变量本身在内存中一定单元中bit组合的数据表示
变量值就是该变量本身的值例1中的b的变量值就是2,p的变量值就是(b的地址)
变量地址:即使指针(指针就是一个地址,地址就是指针)
例1中的p的值就是变量地址, 例1中:&b也是变量地址,&为取地址符号
在明白上面的每个概念后那么你的问题“传指针和传指针引用的区别/指针和引用的区别”就好回答了。
传指针:就是将例1中的p或者&b作为一个函数的实参发送给形参
传指针引用:就是把例1中的指针变量p(即使&p)的地址作为一个函数的实参。
注意上面的&p你会问这个什么意思? 你应该只是&为取地址运算符号。被&运算的对象必然是一个变量,那么你要明白一件事情我没在例1中写(&b )你应该明白把变量b的地址取出来,那么(&p)也是一样的道理,对没有错就是取出指针变量p的地址, 切记哦指针变量也是变量哦! 它和普通的变量没什么区别,只不过它是用来保存某个变量的地址罢了。你看例1中的int *p = &b 可不就是把一个普通的int类型的变量的地址赋值给p指针变量了么。
那么关键问题就是“传指针和传指针引用的区别”
本质上没有区别,
还是在例1的基础上加上以下代码:
函数1:voidfun1(int*p)//这里写*p就是说这个形参值接受一个int类型变量的地址
{
}函数2:voidfun2(int**p)
{
intq=3;
}
下面我们用指针传递 调用这个fun1函数:
voidfun1(&b);//
调用后b的值变成了1
下面我们用指针引用传递 调用这个fun2函数:
voidfun2(&p);//这里写&p意味着被调用函数是应该是接受一个【指针变量】的地址的(即传指针引用)
调用后p的值变成了某个变量的地址
好了总结一下:
指针传递:发送了一个变量的地址, 接受这个地址的函数可以利用这个地址找到这个变 量进行操作。
指针引用传递:发送了一个指针变量的地址, 接受这个指针变量地址的函数可以利用这个地址找到这个指针变量进行操作。
『柒』 问题:向函数中传递指针和传递指针的引用的区别
首先确认下是问的 指针 与 指针的引用的区别?
不是想问
向函数中传递内指针和传递引用容的区别?
指针 与 指针的引用的区别?
{
我觉得是没有区别的。 只是有点画蛇添足的感觉。
可能就是 占用release模式下,占用内存多少的问题了。(具体真不清楚引用是否占用内存)
但是现在的机器, 4个字节···完全可以忽略。
}
『捌』 函数传递引用指针
第一个int &**a
第二个int &*b
『玖』 C++ 函数传指针和传引用的区别
指针抄是用来指向某个变量,而引用是给变量取个别名,其作用就如同typedef一样。 用引用作形参时在调用函数里就像操作实参一样,不需要考虑实参的地址问题 用指针做形参时,由于指针的值是变量的地址,所以要通过对地址解引用来操作其所指的变量。