void swap(int a, int b) { int temp = a; a =b; b = temp; }主函数中int *num1,*num2;swap(*num1,*num2)可以给a,b赋值吗
时间: 2024-05-18 08:17:41 浏览: 14
不能。原因是`num1`和`num2`是指针变量,传递给`swap`函数的是它们所指向的变量的值,而不是它们的地址。在`swap`函数内部,`a`和`b`都是值传递的参数,它们只是形参,不会对实参产生影响。因此,`swap(*num1, *num2)`只是把`num1`和`num2`所指向的值传递给了`swap`函数,而不会改变它们的值。
如果想要使用`swap`函数交换`num1`和`num2`所指向的变量的值,可以按照前面所说的方法,将`num1`和`num2`的地址作为参数传递给`swap`函数,然后在函数内部通过指针来交换变量的值。
相关问题
void swap(int *p1,int *p2) { int *temp; *temp=*p1; *p1=*p2; *p2=*temp; }
以下是一个演示如何使用void swap(int *p1,int *p2)函数交换两个指针所指向的值的例子:
```c
#include <stdio.h>
void swap(int *p1, int *p2) {
int temp;
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
int main() {
int num1 = 10;
int num2 = 20;
printf("交换前:num1 = %d, num2 = %d\n", num1, num2);
swap(&num1, &num2);
printf("交换后:num1 = %d, num2 = %d\n", num1, num2);
return 0;
}
```
输出结果:
```
交换前:num1 = 10, num2 = 20
交换后:num1 = 20, num2 = 10
```
void swap(int a, int b) { int temp = a; a =b; b = temp; }主函数中int *num1,*num2;如何用num1,num2调用swap函数
由于`swap`函数的参数`a`和`b`均为值传递,所以在函数内部对它们的修改不会影响到主函数中`num1`和`num2`指向的变量的值。因此,不能直接使用`num1`和`num2`调用`swap`函数。
如果想要使用`num1`和`num2`调用`swap`函数,可以使用指针来间接修改变量的值。具体地,可以将`num1`和`num2`的地址作为参数传递给`swap`函数,然后在函数内部通过指针来修改变量的值。代码如下:
```c
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int num1 = 10, num2 = 20;
int *p1 = &num1, *p2 = &num2;
swap(p1, p2);
printf("num1 = %d, num2 = %d\n", num1, num2); // 输出 num1 = 20, num2 = 10
return 0;
}
```
在上面的代码中,首先定义了`num1`和`num2`两个变量,然后定义了两个指针`p1`和`p2`,分别指向`num1`和`num2`。接着,将`p1`和`p2`作为参数传递给`swap`函数,函数内部通过指针来交换变量的值。最后,在主函数中输出`num1`和`num2`的值,可以发现它们已经被交换了。