若主函数有定义intx=10,y=5,z=30,调用函数 sub(x,y,&z)以后x,y,z的值是____ void sub(int x, int y,int *z) x += y; y++; *z=y-x; ]
时间: 2024-04-06 14:32:47 浏览: 12
调用函数 sub(x, y, &z) 之后,x 的值为 10,y 的值为 5,z 的值为 -4。因为在函数 sub 中,x 和 y 都是按值传递的,所以对它们的修改不会影响到主函数中的变量。而指针变量 *z 是按引用传递的,所以对它的修改会影响到主函数中的变量 z。在函数 sub 中,x 和 y 分别加了 5 和 1,所以 x 的值为 15,y 的值为 6。然后将 y-x 的值(即 6-15=-9)赋给了 *z,所以主函数中的 z 的值变成了 -4。
相关问题
若主函数有定义intx=10,y=5,z=30,调用函数 sub(xy,&z)以后x.y,z的值是____ void sub(int x, int y,int *z) x += y; y++; *z=y-x; ]
调用函数 sub(x, &z) 之后,x 的值为 10,y 的值为 5,z 的值为 6。因为在函数 sub 中,x 和 y 都是按值传递的,所以对它们的修改不会影响到主函数中的变量。而指针变量 *z 是按引用传递的,所以对它的修改会影响到主函数中的变量 z。在函数 sub 中,x 和 y 分别加了 5 和 1,所以 x 的值为 15,y 的值为 6。然后将 y-x 的值(即 6-15=-9)赋给了 *z,所以主函数中的 z 的值变成了 6。
int x1=30,x2=40; void sub(int x,int y) { x1=x;x=y;y=x1; } void main() { int x3=10,x4=20; sub...
这段代码存在一些问题,可能是笔误或者意图不明确。首先,函数sub中的语句x1=x应该是x=x1,因为x1是全局变量。另外,函数sub中的第三条语句y=x1应该是x1=y,才能实现交换x和y的值。最后,函数main中调用sub函数的语句sub(x3,x4)缺少分号。修改后的代码如下:
```
#include <stdio.h>
int x1=30, x2=40;
void sub(int x, int y) {
int temp = x1;
x1 = x;
x = temp;
x1 = y;
y = x;
}
int main() {
int x3 = 10, x4 = 20;
sub(x3, x4);
printf("%d %d %d %d\n", x1, x2, x3, x4);
return 0;
}
```
运行结果为:20 40 10 20。在函数sub中,x和y的值并没有被用到,所以交换操作并没有起到任何作用。在函数main中,打印出了全局变量x1和x2的值,以及局部变量x3和x4的值。