【发布时间】: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 中获取代码,将其缩减为一个显示问题的小示例,然后将生成的代码编辑到您的问题中。 (是的,你的问题已经解决了,但是这个问题应该对以后的读者有用。)