如何使代码输出“交换后:10、5”?

时间:2019-05-23 03:36:38

标签: c function void

所以我是编程新手。当我在C中搜索void的不同用法时,我从Quora中找到了这段代码。我首先认为它将产生以下结果:

“交换之前:5、10 交换后:10,5“

但是我得到的输出是:

“交换之前:5、10 交换后:5、10“

相反。

我觉得我需要隔离其中一个     “交换(num1,num2);”     “ printf(”交换后:%d,%d \ n“,num1,num2);”

“ int num1 = 5,num2 = 10;”

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

我尝试声明“ int num1 = 5,num2 = 10;”在main之外,还尝试将其放在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“

1 个答案:

答案 0 :(得分:2)

您应将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);
}