我正在尝试从此函数返回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
}
答案 0 :(得分:5)
您在期望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
的{{1}}格式说明符期望scanf
,但是您传递了int *
。您需要传递int
和x
的地址:
y