- 締切済み
C言語 関数のパラメータがわかりません
C言語 関数のパラメータ(値渡し?)がよくわかりません。 意味として、「呼出し側から関数へのデータ受け渡しにはパラメータを使用します。パラメータとは関数名の後のカッコ内に書かれているデータ受け渡し用の変数を指します。」とあり、どのような動きになっているのかイメージがつきません。 どなたか教えていただけないでしょうか?
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- sankaku197
- ベストアンサー率47% (29/61)
No2氏の変数xとaの関係は、例えばこんな感じになります。 void main(void){ int x=10; 変数名 x ←int x; 値 10 ←x=10; アドレス 0 1 2 3 4 5 6 7 8 9 10 11 test(x); 変数名 x a←int a; 値 10 10←xの値をコピー アドレス 0 1 2 3 4 5 6 7 8 9 10 11 } アドレスの意味は分からなくても大丈夫です。 test()関数を呼び出すと新たにaという変数が作られるのが分かって貰えれば充分です。
- death_note
- ベストアンサー率32% (61/189)
VBでいうByRefとByValの違いですね。 普通にコーディングしていればすべて値渡しになってます。 以下例文です。 値渡し void test(int a){ a++; } 参照渡し void test(int& a){ a++; } ここで int a=10; test(a); printf("%d\n",a); を実行した場合を考えると、値渡しの場合は10が、参照渡しの場合は11が出力されます。 このように、値渡しでは関数内で引数を変更しても影響を受けない、参照渡しでは影響を受ける、という感じでしょうか。
- sakusaker7
- ベストアンサー率62% (800/1280)
>また、値の場所(アドレス)を渡すことを"参照渡し"といいます 違いますよ。
- postal0x02
- ベストアンサー率42% (24/57)
>C言語 関数のパラメータがわかりません 多分、"引数(ひきすう)"のことでしょう。 関数に値を渡すことを"値渡し"といいます。 また、値の場所(アドレス)を渡すことを"参照渡し"といいます。 test という関数があり、10 という数値をmain関数から渡したいとします。 その場合こうなりますね。 void main(void) { int x = 10; test(x); } void test(int a) { /* ここの時点で a は 10 です */ a = 0; } この場合 10 という数値が test の変数 a に"コピー"されます。 "コピー"されるので、a に 0 を入れても、 main関数の x には影響がありません。 説明ヘタですみません。
- joqr
- ベストアンサー率18% (742/4026)
「Cの絵本」この題名の本を読むと良いです 「アルゴリズムの絵本」も合わせて読みましょう これは、超超初心者向けの本です ここからスタートしましょう 今のレベルで質問をしても、回答は多分理解できないと思います すごく分かり易い本です
お礼
ありがとうございます。 参考にしてみます!
お礼
イメージはつかめました! ありがとうございます。