以下の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ランキング
-
「.movpkg」「.m3u8」ファイル...
-
YahooのIDがロックされてしまい...
-
ファイル名の長短について
-
jpeg画像の圧縮
-
ITの見積もりってなんであんな...
-
STEAM版BF4が起動しない
-
ホームページビルダークラシッ...
-
ふんわりラウンドと同じ感じの...
-
ゆうちょ認証アプリが使えません
-
gimpで文字の細工をしたい
-
ATOKをお使いの方、今後もVer U...
-
jtrim 1.53cが正常な動きをし...
-
GIMPで直線が書けない
-
CDやCD-Rは、破壊すると有害物...
-
一太郎の文章編集 改行の削除
-
ホームページにあるPDFファイル...
-
ホームページビルダーのバージ...
-
自分で描いた下手な絵を綺麗に...
-
FTP(Filezilla)で「上書きしま...
-
googleスプレッドシートのキャ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
static変数のループ内での処理
-
htmlコードのロック
-
Apple Software Updateでディス...
-
Dreamweaver ナビゲーションを...
-
Dreamweaver一部にだけ編集可能...
-
DreamweaverCS3 テンプレートの...
-
リカバリディスクの作り方を考...
-
Expression Web4のDWTについて
-
ドリームウィーバーで動画を挿...
-
Dreamweaverのテンプレート機能...
-
(ドリームウィバー)テンプレ...
-
テンプレの編集可能領域に入れ...
-
ワードのテンプレート編集について
-
現コンパイラがサポートしてい...
-
カンマ区切り形式ではなく、セ...
-
キングファイルの背表紙を作成...
-
パワーポイントで参照ページを...
-
<IFRAME>でコンテンツ部分のみ...
-
エクセルVBAでマルチページの切...
-
リンクをアップデートするしな...
おすすめ情報