C语言,函数来交换两个数值,为什么我运行的结果两个数值没有交换?

#include<stdio.h>
void swap (int n,int m)
{
int temp;
temp=n;
n=m;
m=temp;
}
void main()
{
int a=10,b=20;
swap(a,b);
printf("%d,%d\n",a,b);
}

你交换的只是swap函数内的局部变量n,m值,应该改成这样

#include<stdio.h>
void swap (int *n,int *m) 
{
int temp;
temp=*n;
*n=*m;
*m=temp;
}
void main()
{
int a=10,b=20;
swap(&a,&b);
printf("a=%d,b=%d\n",a,b);
}

注意函数形参的传值和传地址的区别

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-10-08
你的交换函数中的变量只在交换函数中有效,所以没办法影响函数外的变量,应该传指针
第2个回答  2015-10-05

你这是按值传递

swap(&a,&b);

void swap (int *n,int *m) 
{
int temp;
temp=*n;
*n=*m;
*m=temp;
}

第3个回答  2015-10-05
这函数,确实不能转换。
相似回答