1、引用作为函数参数 因为引用是对象的别名,实际上和原始对象是同一个对象,不是原始对象的拷贝。所以引用作为函数参数时,传参无须拷贝,提高了效率,另外引用还会改变实参。 void swapint(int &a,int &b) { int temp; temp = a; a = b; b = temp; } swapint(x,y); 1. 2. 3. 4. 5. 6. 7. ...
如果指针作为参数在函数里修改指针所指向的一个区域里的数据,那么在主函数里的数据也就被修改了,但是如果要修改指针指向地址本身,修改后的数据却不会反应在主函数里; 如果想要在函数里修改指针指向的地址本身需要用引用。
print():用结构体变量作为实参和形参,简单明了,但在调用函数时形参要额外开辟内存,实参中全部内容通过值传递一一传给形参。造成空间和时间上的浪费。 print_point():指定亦是作为实参和形参,实参只是将stu的起始地址传给形参,而不是一一传递,也没有额外的内存开辟,效率高。但可读性可能不是很好。 print_reference...
可以看到形参p的值确实改变了。 然后再谈谈传引用:当函数的参数为引用类型时,当实参传进函数时,形参不再是仅仅进行一个简单的复制,形参直接成了实参的别名,也就是说此时形参和实参就是一个东西,你对形参的操作,都会实时的反映到实参身上。我们可以写一个fun2函数,将函数参数类型设置为引用类型,就能达到想到的效果...
4。如果pa是指针,那么*pa就是引用了。但是两者在作为形参的时候非常相似,区别是指针拷贝副本,引用不拷贝。程序如下:include<stdio.h> void pt(int * pta,int * ptb){ int *ptc;ptc=pta;pta=ptb;ptb=ptc;} void ref(int &ra,int &rb){ int rc;rc=ra;ra=rb;rb=rc;} void main()...
我们可以把引用理解成变量的别名。定义一个引用的时候,程序把该引用和它的初始值绑定在一起,而不是...
有本质区别。指针本质上可以在整个OS允许的内存块上任意移动,有时候还会跨界到其他内存块上去。本质上它...
引用变量与指针变量类似,引用变量与指针变量区别在于,引用变量初始化后,其存储单元内的值不会发生变化,是特定变量的别名,在函数参数传递中,是变量的地址;而指针变量其值没有限定。 如下图,引用变量是占用了存储单元的,那么如何才能获得引用变量的存储单元地址呢 ...
指针变量在符号表上对应的地址值为指针变量的地址值,而引用在符号表上对应的地址值为引用对象的地址值。符号表生成后就不会再改,因此指针可以改变其指向的对象(指针变量中的值可以改),而引用对象则不能修改。 多说一点: 当数组作为参数传入的时候,会退化为指针!!!
函数传参指针和引用的差别,常规情况函数参数传递是所谓的“值传递”。啥意思,就是传的只是值,而不是变量自己以身相许。上面的例子来说,main中的ab传递给函数的ab发生了什么呢,是main中的ab把值传递给了函数的ab,这是四个变量!!!main的ab和swap的ab不是一码事!!!