快捷导航

请教大佬!数组里的数没有经过函数调用的过程就直接输出了,什么原因?

#includevoid main(){        int swap(int a,int b);        int a[100],i,j;        printf("please enter four numbers:\n");          for(i=0;i

免责声明:本内容仅代表回答者见解不代表本站观点,请谨慎对待。

版权声明:作者保留权利,不代表本站立场。

回复

使用道具 举报

参与会员2

你是希望 swap 函数交换两个参数的值吗? 如果是的话,那么很遗憾,这样的 swap 无法实现这个功能。


函数传参是“值传递”,也就是说函数中的形参的值是“拷贝”了调用函数时的实参值,在函数中操作形参并不会影响外面的实参。你在 swap 函数中交换了形参 a b 的值,但这不会影响实参——也就是数组中元素的值。


函数参数的值传递是很重要的一个知识点,一般来说,你能写出 swap 这样的函数意味着你已经学过这个知识点了。如果你确实学过了这个,那你可能需要再复习一下相关知识。


还有,swap 函数根本没有必要返回值。
回复

使用道具 举报

执行swap需要的条件是“a > a[j]", 尝试在scanf的时候输入不同顺序的数
回复

使用道具 举报

可能感兴趣的问答

发新帖
  • 微信访问
  • 手机APP