迪迦带着光来了
#include<stdio.h>int swap(int a,int b);
int main()
{
int a,b;
scanf("%d %d",&a,&b);
swap(a,b);
printf("%d,%d",a,b);
return 0;
}
int swap(int a,int b)
{
int t;
t=a;
a=b;
b=t;
}
为什么不能实现交换
这是我以前的一个代码
// c
#include <stdio.h>
void swap(int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
int main(void)
{
int a = 3, b = 5;
printf("交换前, a = %d, b = %d\n", a, b);
swap(&a, &b);
printf("交换后, a = %d, b = %d\n", a, b);
} 值传递:子函数swap()里面进行打印输出时主函数a和b对应的a和b是进行了交换,但是执行到主函数进行打印输出时主函数里面的a和b是没有进行交换的。这是因为主函数的a和b只是赋值给子函数的形参a和b,子函数只是将两个形参进行了交换而没有将主函数的实参a和b进行交换,而且子函数swap()调用完后a、b和t都会自动释放掉。
应该还是作用域的问题?
你可以在 swap 里面打印一下 a b
事实上 a b 在 swap 里面是已经互换完成了的,但是因为作用域的关系,所以并不会传回给 main 函数 Daniel_Zhang 发表于 2021-3-4 22:11
这是我以前的一个代码
谢谢,感觉楼下解释的更清楚些
小腥腥 发表于 2021-3-4 22:19
谢谢,感觉楼下解释的更清楚些
嗯呢,你能解决问题就好{:10_297:}
页:
[1]