以下の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
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画像のウォーターマークをツー...
-
音楽CD 拡張子 CDA なのに再生...
-
STEAM版BF4が起動しない
-
ペースト後のカーソル位置
-
GarageBandはコレが出来ますか?
-
画像ののコピーアンドペースト...
-
インストールしたソフトを別の...
-
jtrim 1.53cが正常な動きをし...
-
GIMPで直線が書けない
-
スマホのデータをパソコンに送る
-
fastcopyについて
-
コピー元とコピー先を同じにす...
-
PDFファイルを開きたいので...
-
新バージョンPDFでのスナップシ...
-
スプレッドシートの作業範囲
-
ノートPCで一太郎というソフト...
-
Macのミュージックデータの格納...
-
ADGUARD使い方
-
powerAutomateの使用メモリにつ...
-
エクセルなどで自分専用の辞書...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Dreamweaver一部にだけ編集可能...
-
Dreamweaver現状維持したまま編...
-
htmlコードのロック
-
static変数のループ内での処理
-
DreamweaverCS3 テンプレートの...
-
現コンパイラがサポートしてい...
-
Expression Web4のDWTについて
-
カンマ区切り形式ではなく、セ...
-
<IFRAME>でコンテンツ部分のみ...
-
パワーポイントで参照ページを...
-
エクセルVBAでマルチページの切...
-
リンクをアップデートするしな...
-
txtファイル内の指定の単語の数...
-
キングファイルの背表紙を作成...
-
「リンク」と「ハイパーリンク...
-
VBAでマルチページのページ指定...
-
htmlでテキストファイルの中身...
-
Ctrl+Hで置換にならない
-
エクセルでアルファベット5段階...
-
adobe PDF リンク枠を消せますか
おすすめ情報