Как сделать вывод этого кода "После замены: 10, 5"? - PullRequest
0 голосов
/ 23 мая 2019

Так что я новичок в программировании. И я нашел этот код из Quora при поиске различных вариантов использования void в C. Сначала я предположил, что он будет иметь результат:

"До обмена: 5, 10 После замены: 10, 5 "

Но я получаю вывод:

"До обмена: 5, 10 После замены: 5, 10 "

вместо.

Я чувствовал, что мне нужно изолировать либо "swap (num1, num2);" "printf (" После замены:% d,% d \ n ", num1, num2);"

или

"int num1 = 5, num2 = 10;"

из остальных операторов внутри главной функции.

Я попытался объявить "int num1 = 5, num2 = 10;" за пределами основного, а также попытался поместить его внутри функции подкачки. Это не сработало.

// 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 Ответ

2 голосов
/ 23 мая 2019

Вы должны передать адреса 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);
}
...