ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.4017909 関数の引数と実引数の取り扱いについて
質問者:asa_hikawa C言語初心者です.
関数の引数と実引数の取り扱いについて,教えていただきたいことがあります.
例えば,2変数の和を求める関数を考えると,以下のようになると思います.
#include <stdio.h>
double sum(double x, double y);

int main(void)
{
double a, b, wa;
a=2.0;
b=3.0;
wa=sum(a,b);
return 0;
}

double sum(double x, double y)
{
double total;
total=x+y;
return total;
}

このとき,mainプログラムでは,a,bふたつの変数を定義しておいて,関数sumに入れて計算させているわけですが,mainプログラムで変数x,yを定義しておいて,以下のようなプログラムにするのはありでしょうか? 参考書などをみると,前者のように取り扱っているようなのですが,試しに後者で実行させてみても同じ結果となりました.

#include <stdio.h>
double sum(double x, double y);

int main(void)
{
double a, b, wa;
a=2.0;
b=3.0;
wa=sum(a,b);
return 0;
}

double sum(double x, double y)
{
double total;
total=x+y;
return total;
}
困り度:
  • すぐに回答を!
質問投稿日時:
08/05/12 23:09
この質問に対する回答は締め切られました。

回答

ANo.3 一箇所typoがありました。
後者の「前者」は「後者」が正しいです。あ〜ややこし。
回答者:asuncion
種類:回答
どんな人:一般人
自信:参考意見
回答日時:
08/05/12 23:42
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答良回答20pt

ANo.2 > 以下のようなプログラムにするのはありでしょうか

どちらも全く同じです。
前者は、sum関数呼び出し時の実引数a,bが、それぞれsum関数の仮引数x,yに正しく対応しています。
前者は、sum関数呼び出し時の実引数x,yが、それぞれsum関数の仮引数x,yに正しく対応しています。

ところで、せっかく和の値を求めたのですから、出力する方がよいと思いませんか?
回答者:asuncion
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
08/05/12 23:40
この回答へのお礼結局,対応関係を間違えないようにすれば,計算をしてくれるのですね?

ありがとうございました.

> ところで、せっかく和の値を求めたのですから、出力する方がよいと思いませんか?

はい.もちろん,そうします.

回答

ANo.1 前者のコードと後者のコードが全く同じであるように見えます。
どこが違っていますか?
回答者:asuncion
種類:補足要求
どんな人:一般人
自信:参考意見
回答日時:
08/05/12 23:20
この回答への補足すみません.後者のコード,正しいのは以下です.

#include <stdio.h>
double sum(double x, double y);

int main(void)
{
double x, y, wa;
x=2.0;
y=3.0;
wa=sum(x,y);
return 0;
}

double sum(double x, double y)
{
double total;
total=x+y;
return total;
}
この回答へのお礼この回答にお礼をつける(質問者のみ)