アプリ版:「スタンプのみでお礼する」機能のリリースについて

最近C言語を勉強しているのですが変数の有効範囲について教えてください。
ローカルやグローバル変数があるのが分かって関数内の変数も関数内でのみ有効というのも理解したのですが
int a( int b );
という関数の最初に書く括弧の中のbと宣言している変数も関数内に含まれているという事で良いのでしょうか?。

A 回答 (3件)

#2 を読んで気づいた. プロトタイプ宣言中の仮引数名なら, 「そのプロトタイプ宣言のみ」で有効です. 現実的には「たまたまそこに

書いてあるだけで本質的な意味はない」としていいけどね.
    • good
    • 0
この回答へのお礼

お二人ともありがとうございました。
できればお二人とも分かりやすかったのでどちらもベストアンサーにしたいのですが今回は最初に書いてくださったTacosanさんをベストアンサーにします。
ありがとうございました。

お礼日時:2011/06/02 15:28

これはプロトタイプ宣言というヤツです。


Cではあるシンボルが出てきた場合は事前に
定義されていることが原則で、例えばmainの
前にaという関数が記述されていれば、mainの
中でaを使用することができますが、aがmainの
後に記述されていると、エラーになります。
そこで、あらかじめaという関数があることを宣言
しておくのです。ここで重要なことは戻り値の型、
関数の名前、パラメータの型と個数です。
つまり、パラメータの名はどうでもよいのです。
以前はint a(int,char*);のように型だけ書いて
いました。(今でもこういう書き方はOK)
今はインテリジェンスでの表示なども考慮して、
意味のある名前を付ける方が一般的ですが、
プロトタイプ宣言内の名前には効果はありません。
宣言で使った名前を使う義理は無く、関数本体で
別の名前にしても全く問題ありません。
ということで、質問の回答としては以下の通りです。
「bは仮の名前であって、関数の中に含まれない」
    • good
    • 0

そうです. 仮引数は「関数の先頭で (初期値を与えて) 定義した変数」とみなしていい.

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!