#include<stdio.h> void fun(int*x, int*y) { int* t ; printf("%d %d\n", *x, *y); *x = 3; *y = 4; } void main() { int x = 1, y = 2; fun(&y, &x); printf("%d %d", x, y); }
时间: 2024-04-28 11:21:31 浏览: 72
这段代码的输出结果是:
2 1
1 4
解释如下:
首先,我们定义了一个函数`fun`,它有两个参数,都是指向整型变量的指针。
然后,在`main`函数中,我们定义了两个整型变量`x`和`y`,并将它们的值分别初始化为1和2。
接着,我们调用了`fun`函数,并将`y`和`x`的地址作为参数传递给了它。
在`fun`函数中,我们首先输出了`x`和`y`指向的变量的值,即2和1。
然后,我们将`x`指向的变量的值改为3,将`y`指向的变量的值改为4。
最后,在`main`函数中,我们输出了`x`和`y`的值,即1和4。
可以看到,通过指针传递参数,我们可以在函数内部修改变量的值,并且这些修改也会影响到函数外部的变量。
相关问题
#include<stdio.h> void fun (int *x, int *y) { printf("%d%d", *x,*y); *x=3; *y=4; } int main(void) { int x=1,y=2; fun(&x,&y); printf("%d%d", x, y); return 0;
这段代码有一些问题,需要做一些调整才能正确运行。首先,代码中的函数 fun() 应该在最前面进行声明或定义,否则编译器会报错。其次,代码中的两个 printf() 函数中没有打印换行符,导致输出结果会在同一行上。最后,代码中的返回值应该为 0,表示程序正常结束。下面是修改后的代码:
```c
#include <stdio.h>
void fun(int *x, int *y);
int main(void) {
int x = 1, y = 2;
fun(&x, &y);
printf("%d %d\n", x, y);
return 0;
}
void fun(int *x, int *y) {
printf("%d %d\n", *x, *y);
*x = 3;
*y = 4;
}
```
这段代码的作用是定义了一个函数 fun(),该函数接受两个 int 类型的指针参数 x 和 y,输出它们的值,然后将它们的值分别改为 3 和 4。在 main() 函数中,定义了两个 int 类型的变量 x 和 y,然后将它们的地址传递给 fun() 函数进行处理。最后,输出修改后的 x 和 y 的值。
#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"。
阅读全文