#include<stdio.h> void fun(int* a, int* b) { int* t; t = a; a = b; b = t; } void main() { int x = 3, y = 4; fun(&x,&y); printf("%d,%d",x,y); }怎么交换x,y的值
时间: 2023-12-02 14:06:42 浏览: 86
可以在函数 fun 中改变指针所指向的变量的值,从而实现交换 x 和 y 的值。修改后的代码如下:
```
#include <stdio.h>
void fun(int* a,int* b){
int t;
t = *a;
*a = *b;
*b = t;
}
int main(){
int x = 3, y = 4;
fun(&x,&y);
printf("%d,%d",x,y);
return 0;
}
```
在 fun 函数中,我们通过操作指针所指向的变量,将变量 x 和 y 的值进行了交换。在 main 函数中,调用 fun 函数后,x 和 y 的值被交换,输出结果为 "4,3"。
相关问题
#include <stdio.h> void fun(int a, int b) { int t; t = *b; *b = *a; *a = t; } void main() { int a, b; scanf("%d%d", &a, &b); fun(&a, &b); printf("%d,%d\n", a, b); }
这段代码有一些错误,我来解释一下:
1. 函数`fun`的参数类型应该是指针类型,因为我们需要修改`a`和`b`指向的内存中的值,而不是仅仅修改函数内部的局部变量。
2. 函数`fun`内部变量`t`的类型应该是int型指针,因为我们需要交换`a`和`b`指向的内存中的值,而不是仅仅交换`a`和`b`指针指向的地址。
3. 函数`main`中调用`fun`时应该传入`&a`和`&b`,因为我们需要将变量的地址传递给函数,而不是仅仅传递变量的值。
下面是修改后的代码:
```
#include <stdio.h>
void fun(int* a, int* b)
{
int* t;
t = b;
b = a;
a = t;
}
void main()
{
int a, b;
scanf("%d%d", &a, &b);
fun(&a, &b);
printf("%d,%d\n", a, b);
}
```
这个程序的作用是输入两个整数,然后交换它们的值,并输出交换后的结果。
#include<stdio.h> void fun (int *a,int *b); int main() { int a,b; scanf("a=%d,b=%d",&a,&b); fun(&a,&b); printf("a=%d b=%d\n",a,b); return 0; } void fun(int *a,int *b){ int temp; temp=*a; *a=*b; *b=temp; }c语言
这段代码实现了通过指针将两个变量的值进行交换的功能。首先在主函数中输入两个整数a和b,然后调用fun函数,将a和b的地址作为参数传递给fun函数。在fun函数中,将a所指向的变量值赋给temp,然后将b所指向的变量值赋给a所指向的变量,最后将temp的值赋给b所指向的变量。因此,通过指针操作,成功实现了a和b的值交换。最后在主函数中输出交换后的结果。
阅读全文