c++基础问题 在线等

来源:百度知道 编辑:UC知道 时间:2024/05/21 14:00:52
#include<iostream.h>

int show(int &c)
{
c++;
return c;

}

void main()
{
int a;
cin>>a;
cout<<show(a)<<endl;
cout<<a<<endl;

}

#include<iostream.h>

int show(int *c)
{
(*c)++;
return *c;

}

void main()
{
int a;
cin>>a;
cout<<show(&a)<<endl;
cout<<a<<endl;

}
两种方法都可以改变传入参数的初始值,能不能具体讲下原理

在函数调用中存在着两种传递方法:
第一:值传递,相当于复制一个变量,它们拥有不同的地址,所以利用值传递给函数参数,不会改变原来变量的值.
第二:地址传递,函数参数与原来变量拥有相同的地址,故,改变函数参数的值将会影响原来变量的值.
下面对上面两个程序作进一步分析:
第一个程序:
调用SHOW函数是传递的引用,所谓引用,就是相当于原来变量的一个副本,它的地址和原来变量的地址是相同的,所以传递引用相当于是传递一个地址给函数参数.所以它会改变原来变量的值.
第二个程序:
调用函数是传递的指针,指针就是一个地址,所以它会改变原来变量的值.

1楼的好好想一下你的回答吧,有矛盾的地方啊!
用引用效率比较高,一般的内置变量不明显,但如果参数是比较大的对象时引用就有优势了。