尝试为%d

时间:2018-09-20 03:40:34

标签: c pointers

我正在尝试从此函数返回2个指针,这些指针交换它们的值并在屏幕上显示它们。问题是,我不断收到编译器错误,提示我无法在void类型函数中返回int。有人可以告诉我我在做什么错吗?

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 :(得分:5)

您在期望numberSwap的表达式中使用函数int(即,作为printf的参数),但是函数的返回类型为void 。这就是导致错误的原因。

您只需要自己在语句中调用该函数。返回时,xy将被更新,因此您可以打印它们。

   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的{​​{1}}格式说明符期望scanf,但是您传递了int *。您需要传递intx的地址:

y