C中变量的范围

时间:2012-12-04 04:38:22

标签: c scope

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

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;
    }
}

我需要使用指针吗?如果是这样,你能给我一个如何将它作为指针实现的简化版本吗?

另外,我应该注意到这是我实际使用的非常简化的代码。有一个原因我不只是将best_cost传递给compare_costs函数并让它返回best_cost。

这是整个代码:http://pastebin.com/khs2jcaF

3 个答案:

答案 0 :(得分:2)

问题是best_cost也在main()中定义。

答案 1 :(得分:0)

只需从main()中删除int best_cost;

答案 2 :(得分:0)

请编辑问题以正确表示问题的状态。目前发布的问题与http://pastebin.com/khs2jcaF

中发布的代码不同步