a,b均不是指针void swap(int a, int b) { int temp = a; a =b; b = temp; }主函数中int *num1,*num2;*num1=1,*num2=10,swap(*num1,*num2)中a,b为多少吗
时间: 2024-05-18 08:17:41 浏览: 76
在调用`swap(*num1, *num2)`时,`*num1`和`*num2`的值分别为`1`和`10`。因此,`swap`函数的形参`a`和`b`分别被赋值为`1`和`10`。在`swap`函数内部,`a`和`b`是值传递的参数,它们的值被复制到了函数内部,对它们的修改不会影响到主函数中`num1`和`num2`指向的变量的值。因此,`swap`函数调用结束后,`a`和`b`的值被交换了,分别为`10`和`1`,但是`num1`和`num2`指向的变量的值仍然为`1`和`10`。
相关问题
swap函数没有指针void swap(int a, int b) { int temp = a; a =b; b = temp; }主函数中int *num1,*num2;*num1=1,*num2=10,swap(*num1,*num2)中a,b为多少吗
在调用`swap(*num1, *num2)`时,`*num1`和`*num2`的值分别为`1`和`10`。因此,`swap`函数的形参`a`和`b`分别被赋值为`1`和`10`。在`swap`函数内部,`a`和`b`是值传递的参数,它们的值被复制到了函数内部,对它们的修改不会影响到主函数中`num1`和`num2`指向的变量的值。因此,`swap`函数调用结束后,`a`和`b`的值被交换了,分别为`10`和`1`,但是`num1`和`num2`指向的变量的值仍然为`1`和`10`。
void swap(int a, int b) { int temp = a; a = b; b = temp;}
这个交换函数是错误的,因为它只是交换了传入的参数 a 和 b 的值,而没有对调用它的函数产生任何影响。具体来说,当你在调用该函数时,传入的实参 a 和 b 的值会被复制到函数内部的形参 a 和 b 中,函数内部的操作只会改变形参 a 和 b,而不会改变实参 a 和 b。因此,这个函数是无效的。
如果要正确地交换两个变量的值,需要使用指针或者引用,可以参考我上面给出的代码。
阅读全文