Функция пытается вернуть два указателя для% d - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь вернуть 2 указателя из этой функции, которая меняет их значения и отображает их на экране.Проблема в том, что я получаю сообщение об ошибке компилятора, в котором говорится, что я не могу вернуть int в функцию типа void.Может кто-нибудь показать мне, что я делаю не так?

void numberSwap(int *number1, int *number2);

int main()
{
   int x,
       y;

   scanf("%d%d", x, y);

   printf("before swap: %d and %d", x, y);
   printf("after swap:  %d and %d", numberSwap(&x, &y));

   return(0);
}

void numberSwap(int *number1, int *number2)
{
   int t;

   t        = *number1;
   *number1 = *number2;
   *number2 = t;

   return
}

1 Ответ

0 голосов
/ 20 сентября 2018

Вы используете функцию numberSwap в выражении, которое ожидает int (то есть как параметр для printf), но тип возвращаемого значения функции - void.Вот что вызывает ошибку.

Вам просто нужно вызвать функцию в выражении отдельно.Когда он вернется, x и y будут обновлены, поэтому вы можете распечатать их затем.

   printf("before swap: %d and %d", x, y);
   numberSwap(&x, &y);
   printf("after swap:  %d and %d", x, y);

У вас также есть проблема здесь:

scanf("%d%d", x, y);

КакСпецификатор формата %d для scanf ожидает int *, но вы передаете int.Вам нужно передать адреса x и y:

scanf("%d%d", &x, &y);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...