プロが教える店舗&オフィスのセキュリティ対策術

C言語でグローバル変数についての質問です。
変数のスコープはなるべく狭いほうがいいと言われたのですが、これはなぜでしょうか?ローカル変数よりもグローバル変数のほうが実行速度が遅くなったりするのでしょうか?
回答よろしくお願いします。

A 回答 (3件)

グローバル変数に何が入っているかは、プログラムを読み始めて最後まで読み終わるまでずっと覚えておかなくてはなりません。


ローカル変数だと、関数の最初から最後まで覚えておけば大丈夫。

同じ意味で、宣言するのが面倒だからと全然違う目的に使い回すのも良くない。

速度はケースバイケースですが、実感できるほどの差には普通なりません。
    • good
    • 0
この回答へのお礼

>>宣言するのが面倒だからと全然違う目的に使い回すのも良くない。

なるべく使い回した方が実行速度短縮になっていいのかな?と思っていたのですが、これはやらないほうがいいんですね。

>>速度はケースバイケースですが、実感できるほどの差には普通なりません。

これも引数として渡すより、グローバル変数にした方が速いのかと思っていたのですが、殆ど代わらないのならやめるようにします。

回答ありがとうございました!

お礼日時:2009/08/05 22:53

金庫を路上に放置しておくようなものです。



一人で自己満足の範囲でマスターベージョンのようなプログラムならば好き勝手にやっても構いませんが、
将来的に仕事にしたいとか、自分で作ったアプリを一般公開したいなどのような目的がある場合は、グローバルなんて知らなくていいですよ。

何がどういつの時点で入っているか、書き換わっているか。わかったもんじゃないです。
    • good
    • 0
この回答へのお礼

>>何がどういつの時点で入っているか、書き換わっているか。わかったもんじゃないです。

そういう物なんですね。
回答ありがとうございました!

お礼日時:2009/08/05 22:58

変数のスコープが広いと、広い範囲からアクセス(参照・変更)できますね。


参照はともかく、広い範囲から変更できるということは、
自分が意図しない、思わぬところで変更していることがあり得ます。
その結果、「この変数の値は、なぜこうなっているのか?」という
問題に苦しむ場合が多くなります。
プログラムの完成に時間がかかります。
変数のスコープ(勢力範囲)ができるだけせまい方がいいのは、
こういう理由のためです。
    • good
    • 0
この回答へのお礼

プログラムが製作しにくくなるという理由なんですね。
まだ小規模なプログラムしか書けないので余り実感が湧きませんが、大規模なプログラムだとそのようなことが大事になってくるのでしょうね。
回答ありがとうございました。

お礼日時:2009/08/05 22:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!