C语言中变量的作用域

C语言中变量的作用域,c,scope,C,Scope,我有一个程序,它有一个叫做best_cost的变量,它是在所有函数之外定义的。然后,我有一个名为compare_cost的函数,它可以更改best_cost的值,并且我在main()中打印了best_cost。 现在它输出1000000,这告诉我比较成本函数的范围不能改变最佳成本的值。我使用了调试器,发现最佳成本在比较成本中发生了变化。以下是我的代码的简化版本: int best_cost = 1000000; int main { compare_costs(new_cost);

我有一个程序,它有一个叫做best_cost的变量,它是在所有函数之外定义的。然后,我有一个名为compare_cost的函数,它可以更改best_cost的值,并且我在main()中打印了best_cost。 现在它输出1000000,这告诉我比较成本函数的范围不能改变最佳成本的值。我使用了调试器,发现最佳成本在比较成本中发生了变化。以下是我的代码的简化版本:

int best_cost = 1000000;

int main {

    compare_costs(new_cost);

    printf("%d", best_cost);

}

void compare_costs(nc) 
{
    if(nc < best_cost) {
        best_cost = nc;
    }
}
int最佳成本=1000000;
int main{
比较成本(新成本);
printf(“%d”,最佳成本);
}
无效比较成本(nc)
{
如果(nc<最佳成本){
最佳成本=nc;
}
}
我需要使用指针吗?如果是这样的话,你能给我一个如何实现它作为指针的简化版本吗

另外,我应该注意,这是我实际使用的非常简化的代码。我之所以没有将最佳成本传递到compare_costs函数并让它返回最佳成本,是有原因的


下面是全部代码:

问题是main()中也定义了最佳成本。

只需删除
int-best\u成本int main()中发布的代码不同步,很抱歉,我没有仔细查看就编写了此简化代码。我认为简化过程中丢失了一些内容。您可以更改函数中的全局变量。您的示例没有演示您遇到的实际问题。在您的pastebin示例中,您在main中声明了一个best_cost变量。pastebin中的代码太长。您问题中的代码没有显示问题。请从pastebin获取代码,将其缩减为一个展示问题的小示例,并将生成的代码编辑到您的问题中。(是的,你的问题已经解决了,但这个问题应该对未来的读者有用。)