如何使此代码输出 "After swapping: 10, 5"?

How do I make this code output "After swapping: 10, 5"?

所以我是编程新手。当我在 C 中搜索 void 的不同用途时,我从 Quora 找到了这段代码。我首先假设它的结果是:

"交换前: 5, 10 交换后:10、5"

但我得到的输出是:

"交换前: 5, 10 交换后:5, 10"

相反。

我觉得我需要隔离 "swap(num1, num2);" "printf("交换后:%d, %d \n", num1, num2);"

"int num1= 5, num2 = 10;"

来自 main 函数中的其余语句。

我尝试在 main 之外声明 "int num1= 5, num2 = 10 ;",也尝试将它放在 swap 函数内部。那没有用。

// The problem

void swap( int var1, int var2 )
{
  int temp;
  temp=var1;
  var1=var2;
  var2=temp;
}
void main( )
{
  int num1= 5, num2 = 10;
  printf("Before swapping: %d, %d \n", num1, num2);
  swap(num1, num2);
  printf("After swapping: %d, %d \n", num1, num2);
}

那么,我有什么选择来获得所需的输出:

"交换前: 5, 10 交换后:10, 5"

?

你应该将 num1 和 num2 的地址传递给交换函数

void swap(int *var1, int *var2)
{
    int temp = 0;

    temp = *var1;
    *var1 = *var2;
    *var2 = temp;
}

void main(void)
{
    int num1= 5, num2 = 10;
    printf("Before swapping: %d, %d \n", num1, num2);
    swap(&num1, &num2);
    printf("After swapping: %d, %d \n", num1, num2);
}