错误:声明在全局范围内隐藏了一个变量

时间:2020-07-01 04:47:36

标签: c arrays sorting mergesort cs50

我一直在尝试为CS50 ps3编写tideman.c。我正在运行合并排序,并且有一个结构数组,其中每个元素都由两个int组成。我正在尝试将该数组传递给函数,但我不断收到错误消息:error:声明在全局范围内隐藏了一个变量。 这是我的函数声明:

void Merge_Sort(pair pairs[], int l, int r)

这是我的电话:

int r = pair_count - 1;
int l = 0;
Merge_Sort(pairs, l, r);
return;

pair_count是一个整数,对是上述类型对的数组(两个整数)。任何帮助将非常感激!编译器指出声明本身有错误。它说数组对已经在全局范围内声明过了,就初始化而言,这是正确的,但是我不知道如何在没有这种情况的情况下将其传递给函数。这是原始数组的声明:

pair pairs[MAX * (MAX - 1) / 2];

谢谢!

1 个答案:

答案 0 :(得分:0)

只需尝试更改作为参数发送的这些变量的名称。我认为它将起作用。请将对的名称更改为pairs_g。 对于许多编译器来说这应该不是问题,但是可能是您的编译器不允许使用阴影变量。

int r_g = pair_count - 1;
int l_g = 0;
Merge_Sort(pairs_g, l_g, r_g);
return;