0

すべての関数の外部で定義されたbest_costという変数を持つプログラムがあります。次に、best_costの値を変更できるcompare_costsという関数があり、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

4

3 に答える 3

2

問題は、main() で best_cost も定義されていることです。

于 2012-12-04T04:50:23.600 に答える
0

int best_cost;main() から削除するだけです。

于 2012-12-04T05:23:09.503 に答える
0

問題の状態を適切に表すように質問を編集してください。現状では、投稿された問題は、 http://pastebin.com/khs2jcaF内に投稿されたコードと同期していません。

于 2012-12-04T07:03:02.650 に答える