使用函数交换变量不起作用

我是C的初学者,所以如果我做错了什么,不要对我大喊大叫……

几天前我学习变量的时候,我得到了关于交换两个数字的作业问题 – 我使用第三个变量来解决这个问题。
(把我的答案放在这个问题上,只是为了防止误解):

在此处输入图像描述

现在,当我研究函数材料时,我想用函数测试这个问题。 这是我写的代码:

在此处输入图像描述

我不知道为什么,但即使我使用swap()函数更改了值,输出仍然是3 4 。 任何人都知道为什么会这样?

谢谢..

xy地址作为函数的参数传递。 现在它们是局部变量,不会对原始变量进行更改。

做如下 –

 void swap(int *x,int *y){ /* dereference pointers and swap */ int temp = *x; *x = *y; *y = temp; } 

并像这样打电话给main

 swap(&x,&y); 

你正在做的是按值传递参数。 这意味着在函数调用期间,将创建参数的副本。 因此,在函数内部,您正在处理实际变量的副本。

相反,您需要将其作为参考传递。 请阅读有关按值传递与按引用传递的更多信息。

 #include  void swap(int& x,int& y) //Instead of passing by value just pass by reference { int temp=x; x=y; t=yemp; } int main() { int a=3,b=4; swap(a,b); printf("%d %d\n",a,b); return 0; } 

编辑 :C没有参考。 上面的代码将在c ++中使用。 要在C中工作,只需使用指针并在函数内取消引用它。