俗にいうローカル変数は生存寿命が関数内しか無い変数のことを言います。定義された関数外に出ると、その変数は寿命を迎えて文字通り消滅します。スコープ(見える範囲)が定義ブロック(例えば関数内や{}内など)内に限られるため書き換え・参照(値を使うこと)が範囲内でしか出来ません。例を書くとこうなります。sub1のaとsub2のaは同じ名前ですが別の変数です。いうプログラムを組んで色々試してみてください。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。aというのは、print()内で宣言されていますので、printという関数を抜けると破棄されて存在しなくなります。関数内であれば、フラグを使おうがなにをしようが勝手です。0;}とすれば使えます。フラグ変数も同様です。グローバル変数はあまりお勧めできないので、乱用はしないように・・・classのメンバとして持っておく、というのも1つの手ではないでしょうか。object)とうものが明確に定義されています。簡単にいえば、関数の外で定義するオブジェクトのことです(ただし、クラスの非静的データメンバは含みません)。生存期間がどうであるかは関係ありません。関数の中でstatic指定子を付けて定義したオブジェクトは局所オブジェクト扱いになります。"stdio.h"なにゆえダブルクォーテーションを使っているのか、いささか疑問に感じるところであります。何だかすっごく不自然な感じがするのは当方だけでしょうか...。バグのないプログラムはない。プログラムは思ったとおりには動かない。"stdio.h"なにゆえダブルクォーテーションを使っているのか、いささか疑問に感じるところであります。何だかすっごく不自然な感じがするのは当方だけでしょうか...。たんなる書き間違いです。<stdio.h>が正しいです。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。8年前スコープとライフタイムがごっちゃに語られることが多いですよね。0;}宣言された名前を使ってアクセスできるかどうかがスコープで、ソースファイル記述上の宣言されたところから宣言のあるブロックが終わるところまでの範囲。宣言された変数の値にアクセスできるかどうかがライフタイムで、宣言されたところから宣言のあるブロックが終わるところまで実行しているあいだの期間(静的変数は別)。スコープが関数内に限定されるのがローカル変数ってことになりますかね。ダブルクォーテーションを使っているのか、いささか疑問に感じるところであります。何だかすっごく不自然な感じがするのは当方だけでしょうか...。ところでboxさんは、なぜ<>と""を使い分けないといけないかご存知ですか?それについてはboxさんに代わり説明します。例として最初におまじないのように#include<stdio.h>と書きますよね。「<>」内でくくられているヘッダファイルは「コンパイラのおまけでついているヘッダファイル」のことなんです。"booting.h"とくくってあるのは「自分で作ったヘッダファイル」のことなのです。"stdio.h"と書いてしまうとエラーが出ることになります。"(任意のファイル名).h"の便利な点としては「分割」ができるという点です。自分で作った関数や処理内容を一つのファイルにまとめて書こうとすると、容量が大きくなりコンパイルしづらくなります。そこで、あらかじめ自分の好きな名前のヘッダファイルにその関数名を書き込んで読み込むようにすれば、コンパイルが早く、しかも容量を節約できるというメリットがあります。デメリットとしてはファイル数が多くなるのと、わかりやすい名前にしておかないと何がなんだかわからなくなるというのがデメリットですね。ダブルクォーテーションを使っているのか、いささか疑問に感じるところであります。何だかすっごく不自然な感じがするのは当方だけでしょうか...。ところでboxさんは、なぜ<>と""を使い分けないといけないかご存知ですか?それについてはboxさんに代わり説明します。例として最初におまじないのように#include<stdio.h>と書きますよね。「<>」内でくくられているヘッダファイルは「コンパイラのおまけでついているヘッダファイル」のことなんです。"booting.h"とくくってあるのは「自分で作ったヘッダファイル」のことなのです。"stdio.h"と書いてしまうとエラーが出ることになります。"(任意のファイル名).h"の便利な点としては「分割」ができるという点です。自分で作った関数や処理内容を一つのファイルにまとめて書こうとすると、容量が大きくなりコンパイルしづらくなります。そこで、あらかじめ自分の好きな名前のヘッダファイルにその関数名を書き込んで読み込むようにすれば、コンパイルが早く、しかも容量を節約できるというメリットがあります。デメリットとしてはファイル数が多くなるのと、わかりやすい名前にしておかないと何がなんだかわからなくなるというのがデメリットですね。"stdio.h"と書いてしまうとエラーが出ることになります。(ここまで間違っていたら申し訳ありません)エラーは出ません。[追記]なぜ、こんな事を書いたかと言うとなんとなく駄目だと聞いたから使っていないのなら、ぜひ理由を知ってもらいたかったからです。調べることでより知識も深まりますので、ぜひ試して調べてみてください。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。例として最初におまじないのように#include<stdio.h>と書きますよね。「<>」内でくくられているヘッダファイルは「コンパイラのおまけでついているヘッダファイル」のことなんです。"booting.h"とくくってあるのは「自分で作ったヘッダファイル」のことなのです。"stdio.h"と書いてしまうとエラーが出ることになります。違いは、単純にパスの検索順番が違うだけです。8年前>へろりんさんなるほど、それは知りませんでした。<>と""を使い分けないといけないかご存知ですか?私はC言語の初心者なので、わかりません。バグのないプログラムはない。プログラムは思ったとおりには動かない。8年前ちなみにVisualStudioの場合、自分で作ったヘッダファイルであっても""でくくるよりも<>でくくったほうが楽ちんな場合がありますというのもインテリセンス君は、プロジェクト外部のヘッダをインクルードしようとするとき<>でくくってないと探してくれないからです。逆にプロジェクト内部のヘッダをインクルードしようとすると""のほうが楽ちんです。VSを使うのならの話ですけど。8年前#include指令の<>と""は、思っている以上に大きな違いがあります。<>形式で取り込むのは「ヘッダ」であり、必ずしもファイルとは限りません。""形式で取り込むのはソースファイルですが、該当するソースファイルが見つからなければ<>形式と同様にヘッダを検索します。検索対象となる場所や順序はいずれも処理系定義になります。"stdio.h"とした場合、最初はstdio.hという名前のソースファイルを探しますが、見つからなければ標準ヘッダのstdio.hを取り込みます。上記はエラーにはなりません。8年前なんかあたしの投稿あたりがきっかけで、トピックのタイトルとは全く違う方向へ話が進んでいるみたいですね。ここらあたりで、ぐい~っと軌道修正しません?または話を終わらせるか...。バグのないプログラムはない。プログラムは思ったとおりには動かない。ミクプラは自由にリンクできます。