为了账号安全,请及时绑定邮箱和手机立即绑定

为什么函数参数直接写int a,int b不行?

#include

using  namespace std; void fun(int a, int b) { int c = 0; c = a; a = b; b = c; } int main() { int x = 10; int y = 20; cout << x << "," << y << endl; fun(x, y); cout << x << "," << y << endl; system("pause"); return 0; }为什么直接int a和int b不行?

正在回答

1 回答

c语言中,函数的参数传递是单向传递,相当于复制一份给子函数做参数,主函数中的变量并不会发生改变。
&a, &b代表传递过来的是2个参数的地址,而自定义函数中,是将2个地址上的值进行交换,虽然这个子函数没有返回语句,主函数中a和b的值都没有变化,但是由于a和b指向的地址交换了,从而主函数中ab的值也就交换了,属于间接交换方式。

形参时用*a、*b,代表形参是指针类型,引用时,只能引用指针类型或者其他类型的地址,所以这里在实参引用时,采用了&a、&b

4 回复 有任何疑惑可以回复我~
#1

时光_丿

这个是C++特有的,在子函数里改变了两个形参,从而使相对应的实参也改变。
2018-01-31 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之离港篇
  • 参与学习       122700    人
  • 解答问题       474    个

C++扫清通往面向对象的最后一道障碍,将所有知识点融会贯通

进入课程

为什么函数参数直接写int a,int b不行?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信