- ベストアンサー
C言語の関数の仮引数の記述
関数の仮引数の( )の中に何の変数を書いたらいいかいまいちつかめていません。関数の実行文や、もしくはmain関数の呼び出し実行文とどんな互換性があってどの変数を書いていいかわからないので教えてください。一応わかる部分を少し書きますがたとえば、変数をコピーするint copy( int a, int b )ってゆーのがあるとすれば、bをaにコピーするために必要となる変数a、bを( int a, int b )と書けばいいと思うんですがどうでしょう?仮引数部分にはmain関数に返す値となる変数だけを書くとどうなるんでしょう? なんかわかりにくくてすいませんが、答えになってなくても関係することであれば返信ください。 あとコンパイラーはCygwinで、理解度はfor文やif文や関数、配列などの基本はだいたいOKです。ポインタとかその他の応用についてはわかりません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
関数の仮引数には、呼び出し側から「渡す値」をコピーして渡されます。 仮引数の変数名は何でも構いません。結果は、関数の値(戻り値)として 呼び出し側に返すか、ポインタ型の引数に返します。 例えば、2つの整数のうち大きい方の値を返す関数はこんな感じでしょうか。 int big1(int x, int y) { if(x >= y) return x; return y; } void big2(int x, int y, int *z) { if(x >= y) *z = x; *z = y; } void main(void) { int a, b; a = big1(5, 9); /* a に結果が入る */ big2(5, 9, &b); /* b に結果が入る */ }
その他の回答 (1)
- KAZUMI2003
- ベストアンサー率37% (77/208)
関数の仮引数部には、呼ばれる元から受け取る値を入れる変数を記述します。 変数は呼び出し元の指定した値が、コピーされて渡されます。このコピーが仮引数に記述された変数に入れられて、関数の中で使用されます。 変数をコピーする関数、int copyは、例としては問題がありすぎました。先述したとおり、引数は実はコピーで、しかも関数の中でしか存在し得ないので、呼び出し元にコピーした結果を返す事ができません。そこでポインタとか、参照とかいうのが出てくるのですが、それはまた別の話。
お礼
返信ありがとうございます。 なんかたとえがへたくそですいませんでした。 なんかイメージはつかめました。 ポインタはかなり難しいらしいのでがんばります。 ありがとうございました
お礼
返信ありがとうございます。 丁寧で具体例まであげていただいてありがとうございます。かなりわかりやすかったです。