• 締切済み

C言語 関数のパラメータがわかりません

C言語 関数のパラメータ(値渡し?)がよくわかりません。 意味として、「呼出し側から関数へのデータ受け渡しにはパラメータを使用します。パラメータとは関数名の後のカッコ内に書かれているデータ受け渡し用の変数を指します。」とあり、どのような動きになっているのかイメージがつきません。 どなたか教えていただけないでしょうか?

みんなの回答

回答No.5

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という変数が作られるのが分かって貰えれば充分です。

回答No.4

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)
回答No.3

>また、値の場所(アドレス)を渡すことを"参照渡し"といいます 違いますよ。

回答No.2

>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 には影響がありません。 説明ヘタですみません。

ikuratouni
質問者

お礼

イメージはつかめました! ありがとうございます。

  • joqr
  • ベストアンサー率18% (742/4026)
回答No.1

「Cの絵本」この題名の本を読むと良いです 「アルゴリズムの絵本」も合わせて読みましょう これは、超超初心者向けの本です ここからスタートしましょう 今のレベルで質問をしても、回答は多分理解できないと思います すごく分かり易い本です

参考URL:
http://www.seshop.com/detail.asp?pid=1806
ikuratouni
質問者

お礼

ありがとうございます。 参考にしてみます!

関連するQ&A