#include< stdio.h> void fun(int x, int y) { int t; t = x; x = y; y = t; } void main() { int a=1,b=2; fun (a,b); printf("%d,%d\n",a,b); }
时间: 2023-12-03 08:03:12 浏览: 246
这段代码的输出结果为“1,2”。
原因是调用函数fun时,传递的是a和b的拷贝,函数内部对x和y的操作不会影响到a和b的值。在函数fun中,x和y的值交换了,但是并没有改变a和b的值。
因此,函数结束后,a和b的值还是原来的值,分别为1和2。在main函数中,printf函数输出a和b的值,因此输出结果为“1,2”。
相关问题
#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=3,y=4
这是因为在函数`fun`中,交换的是指针`a`和`b`的值,而不是交换指针所指向的变量的值。在`main`函数中,我们传递了变量`x`和`y`的地址给函数`fun`,但是在`fun`函数中交换的是指针`a`和`b`的值,而不是交换`x`和`y`的值,因此`x`和`y`的值没有发生改变,仍然是3和4。如果想要交换`x`和`y`的值,可以将`fun`函数改为如下形式:
```c
void fun(int* a, int* b) {
int t = *a;
*a = *b;
*b = t;
}
```
这样就会交换`x`和`y`的值,输出结果为`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=3,y=4
这是因为在函数`fun`中,交换的是指针`a`和`b`的值,而不是交换指针所指向的变量的值。
在`main`函数中,我们传递了变量`x`和`y`的地址给函数`fun`,但是在`fun`函数中交换的是指针`a`和`b`的值,而不是交换`x`和`y`的值,因此`x`和`y`的值没有发生改变,仍然是3和4。
如果想要交换`x`和`y`的值,可以将`fun`函数改为如下形式:
```c
void fun(int* a, int* b) {
int t = *a;
*a = *b;
*b = t;
}
```
这样就会交换`x`和`y`的值,输出结果为`4,3`。
阅读全文