ページ 11

関数に渡す引数について

Posted: 2010年7月06日(火) 17:32
by 爺プログラマー
通常は関数内では引数を参照して計算するだけですが、計算結果を引数に(反映)戻すことは出来ないでしょうか?
戻り値は1個だけで、多くの変数の計算結果を得たいのですが・・・
変数をアドレスで渡す以外に簡単な方法はないでしょうか?

Re:関数に渡す引数について

Posted: 2010年7月06日(火) 18:00
by パコネコ
ポインタとかなら…でもアドレスはダメなんですよね。
宣言をメインの外でする奴はダメですか?

Re:関数に渡す引数について

Posted: 2010年7月06日(火) 18:02
by だいちゃん
こういうことですか?

main(){

int a = 5;
int b = 10;

calc(a,b);

}

int calc(int a, int b){

a+bの解
a-bの解
a*bの解
a/bの解

}


このように関数内で複数解が出る時に
全てを取得したいっていうことでしょうか?

Re:関数に渡す引数について

Posted: 2010年7月06日(火) 18:05
by パコネコ
main()の上で宣言できましたよね?
それでどうですか?

Re:関数に渡す引数について

Posted: 2010年7月06日(火) 18:13
by 爺プログラマー
パコネコ さん

回答ありがとうございます。

パブリックに宣言すれば問題ないのですが、引数のみ入れ替えて同じ処理をする関数なので、
パブリック宣言したのでは意味がなくなってしまいます。
この場合、同じ処理をする関数を2個作成することになりメモリー資源に不利となります。

Re:関数に渡す引数について

Posted: 2010年7月06日(火) 18:18
by MNS
ポインタを使いたくないのなら、参照を使ってはどうでしょうか。

void Swap(int& a, int& b)
{
int tmp = a;
a = b;
b = tmp;
}

int main()
{
int A = 5, B = 10;
Swap(A, B);
return 0;
}

Re:関数に渡す引数について

Posted: 2010年7月06日(火) 18:24
by 爺プログラマー
だいちゃん さん

回答ありがとうございます。

main(){

int a = 5;
int b = 10;

calc(a,b);

}



int calc(int a, int b){

この関数でaが変更になった場合aに結果が入らないか、ということです。

}

Re:関数に渡す引数について

Posted: 2010年7月06日(火) 18:41
by fatens
>int calc(int a, int b){
>
>この関数でaが変更になった場合aに結果が入らないか、ということです。
>
>}

受け取ったaはあくまでコピーなので、変更することはできません。


なぜこのようにしたいのか分かりませんが、構造体にまとめてしまうのはどうでしょうか。

Re:関数に渡す引数について

Posted: 2010年7月06日(火) 18:46
by シエル
構造体にまとめて、そのアドレスを渡して変更するのが良いと思います。
なぜ、ポインタを使いたくないのかが分かりませんが…

Re:関数に渡す引数について

Posted: 2010年7月06日(火) 19:03
by 爺プログラマー
MNS ..プログラマー さん
ありがとうございます、解決しました。

Re:関数に渡す引数について

Posted: 2010年7月06日(火) 19:07
by 爺プログラマー
シエルさん

毎度ありがとうございます。

今後はそのようにすれば可能のようですが・・・
今回はゴタゴタと沢山変数を設定した後ですので今から切り替えはシンドイです。

Re:関数に渡す引数について

Posted: 2010年7月06日(火) 19:16
by シエル
いえ、こちらこそありがとうございます。
私も参照渡しというのを初めて知ることが出来ました。
あまりポインタとの違いは分かりませんでしたが、勉強になりました。