#include<stdio.h> void fun(int *a, int *b) { int *k; k=a; a=b; b=k;} int main() { int a=3, b=6, *x=&a, *y=&b; fun(x,y); printf("%d %d", a, b); }
时间: 2024-04-04 12:05:10 浏览: 68
在这段代码中,函数 `fun` 接受两个整型指针 `a` 和 `b` 作为参数,然后交换它们所指向的整型变量的值。
在 `main` 函数中,定义了两个整型变量 `a` 和 `b`,并且分别用指针 `x` 和 `y` 指向它们。然后调用函数 `fun(x, y)` 来交换 `a` 和 `b` 的值。
最后,通过 `printf` 函数打印出交换后的 `a` 和 `b` 的值。
根据代码的逻辑,我们可以得出函数 `fun` 并没有真正交换 `a` 和 `b` 的值,因为在函数内部只是交换了指针 `a` 和 `b` 的指向。所以,无论如何结果都是打印出原始的 `a` 和 `b` 的值,即输出为 "3 6"。
相关问题
#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"。
#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的值
可以在函数 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"。