関数に渡す引数について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
爺プログラマー

関数に渡す引数について

#1

投稿記事 by 爺プログラマー » 15年前

通常は関数内では引数を参照して計算するだけですが、計算結果を引数に(反映)戻すことは出来ないでしょうか?
戻り値は1個だけで、多くの変数の計算結果を得たいのですが・・・
変数をアドレスで渡す以外に簡単な方法はないでしょうか?

パコネコ

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

#2

投稿記事 by パコネコ » 15年前

ポインタとかなら…でもアドレスはダメなんですよね。
宣言をメインの外でする奴はダメですか?

だいちゃん

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

#3

投稿記事 by だいちゃん » 15年前

こういうことですか?

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:関数に渡す引数について

#4

投稿記事 by パコネコ » 15年前

main()の上で宣言できましたよね?
それでどうですか?

爺プログラマー

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

#5

投稿記事 by 爺プログラマー » 15年前

パコネコ さん

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

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

MNS

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

#6

投稿記事 by MNS » 15年前

ポインタを使いたくないのなら、参照を使ってはどうでしょうか。

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:関数に渡す引数について

#7

投稿記事 by 爺プログラマー » 15年前

だいちゃん さん

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

main(){

int a = 5;
int b = 10;

calc(a,b);

}



int calc(int a, int b){

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

}

fatens

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

#8

投稿記事 by fatens » 15年前

>int calc(int a, int b){
>
>この関数でaが変更になった場合aに結果が入らないか、ということです。
>
>}

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


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

シエル

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

#9

投稿記事 by シエル » 15年前

構造体にまとめて、そのアドレスを渡して変更するのが良いと思います。
なぜ、ポインタを使いたくないのかが分かりませんが…

爺プログラマー

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

#10

投稿記事 by 爺プログラマー » 15年前

MNS ..プログラマー さん
ありがとうございます、解決しました。

爺プログラマー

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

#11

投稿記事 by 爺プログラマー » 15年前

シエルさん

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

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

シエル

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

#12

投稿記事 by シエル » 15年前

いえ、こちらこそありがとうございます。
私も参照渡しというのを初めて知ることが出来ました。
あまりポインタとの違いは分かりませんでしたが、勉強になりました。

閉鎖

“C言語何でも質問掲示板” へ戻る