解決済み

静的動的とは?

  • 困ってます
  • 質問No.9428959
  • 閲覧数99
  • ありがとう数4
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 94% (18/19)

静的とはあらかじめ決められ変わらないもの
動的とは状況に応じて変わるものとあるのですが

以下の文のstaticの部分を見る限りcount変数は変化してるので動的と違うの?と混乱してるのですが
なぜこのcount変数は静的なのか説明をお願いします

int main(void) {
count();
count();
return 0;
}

int count(void) {
static int count;
count++;
printf("%d\n", count);
return 0;
}

よろしくお願いします

質問者が選んだベストアンサー

  • 回答No.2

ベストアンサー率 66% (362/544)

コンピューター カテゴリマスター
静的や動的としている”対象”がなんであるかを理解すると すんなりいきますよ。

この例だと、static宣言で静的としているのは、count変数の「中身」の話ではなく
count 変数の「置き場所や入れ物の大きさ」のことです。
ですので、static宣言したcount変数の置き場所は動かない静的なものではありますが
その変数の中見は、変更できることになります。
(中身を変更できないように固定化したいときに使うのは、staticでなくconstです)

このように関数内で変数を、static (静的=動かせないもの) としていると、
関数が終わっても その変数が確保されたままになるので
例えば++でインクリメントすれば、関数が呼ばれるたびに、1,2,...と増えて行くことになります。
つまり、関数内の変数を 1回ごとに使い捨てにするのではなく、
前回の値を確保したままにしたいときに、static宣言を使います。
お礼コメント
ashitanotenki11

お礼率 94% (18/19)

回答ありがとうございました。
投稿日時 - 2018-02-14 19:25:43
Be MORE 7・12 OK-チップでイイコトはじまる

その他の回答 (全1件)

  • 回答No.1

ベストアンサー率 43% (3897/8866)

他カテゴリのカテゴリマスター
「count変数は変化してる」というときの変化しているのは変数の値です。変数の使用しているメモリ領域は変化しませんし,その関数から抜けたあともメモリ領域は開放されず保持されています。そういう意味で静的なのです。
お礼コメント
ashitanotenki11

お礼率 94% (18/19)

回答ありがとうございました。
投稿日時 - 2018-02-14 19:25:55
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


より良い社会へ。感謝経済プロジェクト始動

ピックアップ

ページ先頭へ