Essential C书中的Swap()函数无法编译

时间:2019-01-10 19:57:29

标签: c pointers specifier

wtf.c:11:6:错误:预期的声明说明符或'&'标记前的'...' 交换(&a,&b);

wtf.c:11:10:错误:预期的声明说明符或'&'标记前的'...'  交换(&a,&b);

我不想因个人问题而诉诸StackOverflow,但我无法弄清楚。代码与本书完全相同。我也曾尝试制作单独的指针并将其用作参数,但是我遇到了同样的错误。有人可以告诉我我在做什么错吗?我正在使用gcc来编译代码。

static void Swap(int *x, int *y){
  int temp;
  temp = *x;
  *x = *y;
  *y = temp;
}

int a = 1;
int b = 2;

Swap(&a, &b);

我希望它至少可以汇编本书中的确切示例,但显然不可能。

1 个答案:

答案 0 :(得分:2)

#include <stdio.h>

static void Swap(int *x, int *y){
  int temp;
  temp = *x;
  *x = *y;
  *y = temp;
}

int main()
{
  int a = 1;
  int b = 2;

  Swap(&a, &b);
  printf("%d %d\n", a, b);
  return 0;
}

该编译和执行将显示“ 2 1”,如您所见,交换有效


由于格式Swap(&a, &b);既不是声明也不是定义(它是函数调用),您遇到了编译器错误

如前所述,任何C程序的入口都是函数 main ,该函数会自动调用,以获取有关C的更多阅读文档