以下のc++ソース内で、static int b = 100;という式ですが、
1回目に、ここの処理を通ったときに静的変数が作成されると思います。
2回目のループのときに、ここでまたb=100と初期化されています。
ですが、ループを重ねるごとに、カウントが1増えていきます。
staticなので、これは期待通りの動作だとは思うのですが、なぜそうなるのかがわかりません。
コンパイラなどが、staticが頭に付いたものは、2度目のループ以降はこの行を無視するように
しているのでしょうか?
もしそうなら、他に暗黙のルール?のようなことが他にもあるのでしょうか?
考えるとさらにc++がわからなくなってきました。
#include <windows.h>
#include <iostream>
using namespace std;
void test(){
int a = 100;
cout << a << " " << &a << endl;
static int b = 100;
cout << b << " " << &b << endl;
b++;
int * abc = new int [10];
abc[0] = 9999;
cout << abc <<" "<< &abc << " " << abc[0] << endl;
delete [] abc;
}
int main(){
while (1){
Sleep(2000);
test();
}
}
教えてください。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
静的な変数は最初にそこを通ったときにのみ初期化される.
No.2
- 回答日時:
int b = 100;
とすると変数bはスタック領域に確保されます。スタック領域では関数に入るときに変数の領域が確保され、出るときに解放されます。ですから毎回毎回関数に入るたびに初期値100として確保されるわけです。
でも
static int b = 100;
とすると変数bはスタックではなく固定的な領域に確保されます。従って関数から出ても解放されずに確保されたところにそのまま残ります。次回関数に入ったときは同じところが使用されます。従って今回は関数内で計算が行われるたびに内容が変化します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- C言語・C++・C# C++初心者です stirng 2 2022/09/20 20:43
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Java Java 配列<選挙> 4 2023/07/31 15:07
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マックの表計算ソフト
-
YahooのIDがロックされてしまい...
-
バーチャルBOX Win95 セットア...
-
「.movpkg」「.m3u8」ファイル...
-
特打について。
-
最新のpowershellについて。
-
ラインで、自分が誰かを追加し...
-
【Cities skyline2】エラーが出...
-
ITの見積もりってなんであんな...
-
LDPlayerのマクロの編集方法を...
-
ホームページビルダーのバージ...
-
CLIP STUDIOを起動してまず出る...
-
ATOKをお使いの方、今後もVer U...
-
MP3Studio You tube Downloader...
-
CMYKのペイントソフトを探して...
-
GIMP2で作成した凹み文字を移動...
-
自分で描いた下手な絵を綺麗に...
-
音楽ファイルをリネームしよう...
-
ゆうちょ認証アプリが使えません
-
クリスタルディスクインフォは...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
static変数のループ内での処理
-
Dreamweaver一部にだけ編集可能...
-
htmlコードのロック
-
Dreamweaverのテンプレートで各...
-
Dreamweaverテンプレート機能で...
-
ワードのテンプレート編集について
-
Dreamweaverテンプレート機能:...
-
現コンパイラがサポートしてい...
-
ドリームウィーバーで動画を挿...
-
DreamweaverMX Templatesが全...
-
(ドリームウィバー)テンプレ...
-
パワーポイントで参照ページを...
-
キングファイルの背表紙を作成...
-
カンマ区切り形式ではなく、セ...
-
<IFRAME>でコンテンツ部分のみ...
-
エクセルでアルファベット5段階...
-
文字を一括で置換するソフト・...
-
Excelで、10000,20000,30000と...
-
txtファイル内の指定の単語の数...
-
リンクをアップデートするしな...
おすすめ情報