【问题标题】:Scope of variables in C [closed]C中的变量范围[关闭]
【发布时间】:2012-12-04 04:38:22
【问题描述】:

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

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

【问题讨论】:

  • int main(),对不起,我没有仔细看就写了这个简化的代码
  • 我认为简化中丢失了一些东西。
  • 您可以更改函数内部的全局变量。您的示例并未说明您遇到的实际问题。
  • 在您的 pastebin 示例中,您在 main 中声明了一个 best_cost 变量。
  • pastebin 中的代码太长。您问题中的代码没有出现问题。请从 pastebin 中获取代码,将其缩减为一个显示问题的小示例,然后将生成的代码编辑到您的问题中。 (是的,你的问题已经解决了,但是这个问题应该对以后的读者有用。)

标签: c scope


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      请编辑问题以正确表示问题的状态。就目前而言,发布的问题与http://pastebin.com/khs2jcaF中发布的代码不同步

      【讨论】:

        猜你喜欢
        • 2021-05-18
        • 2017-06-02
        • 2017-11-03
        • 2013-12-04
        • 1970-01-01
        • 2017-06-28
        • 2016-12-08
        • 2021-11-14
        • 2011-12-23
        相关资源
        最近更新 更多