有关swap函数的使用问题

swap函数在使用方法中有一种方式如下

void swap(int x , int y)
{
int temp=x;
x=y;
y=temp;
}
int main( )
{
int a = 10;
int b = 20;
swap(a , b);
printf("%d %d ",a ,b);
}

这种情况中,实参不会被改变,那么这种情况得swap作用是啥呢?

传参有误,所以swap在这里相当于没有任何作用

没啥作用
应该是写错了
一般传的是指针或地址

swap里的值没有传到main,所以main里,所以a,b没有交换
这里是一个交换的写法,交换a,b的地址

img

void swap(int *x , int *y)
{
int temp=*x;
*x=*y;
*y=temp;
}
int main( )
{
int a = 10;
int b = 20;
swap(&a , &b);
printf("%d %d ",a ,b);
}

没有作用,这样不会发生交换

不会改变 没啥作用

#include<stdio.h>
#include<string.h>
void swap(int a , int b)
{
a = 10;
b = 20;
int temp = a;
a = b;
b = temp;
printf(" a=%d\n b=%d\n ",a ,b);  //在swap内部进行,转换成功
}
int main( )
{
 int a = 10;
 int b = 20;
 swap(a , b);
 printf("a=%d b=%d ",a ,b);  //转换失败
 return 0;
}