#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); }
时间: 2023-06-17 11:04:15 浏览: 147
这段代码有一些错误,我来解释一下:
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的值交换。最后在主函数中输出交换后的结果。
#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的值。但是代码有一个小错误,main函数的返回值类型应该是int而不是void。
正确的代码应该是这样的:
```
#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;
}
```
运行结果会输出 "3, 4",因为指针变量a和b在fun函数内部交换了指向的地址,但是并没有改变x和y的值。如果想要交换x和y的值,可以修改fun函数的实现,如下所示:
```
void fun(int *a, int *b) {
int t = *a;
*a = *b;
*b = t;
}
```
这样运行结果就会输出 "4, 3"。
阅读全文