関数の入出力数の調整は勝手に出来るのでしょうか?

[戻る]
KDG 2002/10/16(水) 19:49:49
Kansuu(A ,B, C, D, E);
の場合、出力を決める方法は、return 変数;
と言う形で戻させて、
F = Kansuu(A ,B, C, D, E);
と言う方法もあると思うのですが、
Kansuu(A ,B, C, D, E);
の中でA〜Eまでの中で、1〜4個までの範囲で
任意に出力としてしまうことも出来るのでしょうか?

入力を1〜2個だけ投入しておいて、
出力として3〜4個値や文字を拾いたい場合も
たまにはあるのではないかと思って
お聞きしました。

アイススケーター 2002/10/16(水) 20:06:21
関数の引数を利用して、出力をしたいということなのでしょうか。

それならば、ポインター渡しで可能なんですが。
失礼ですが、ポインターのことはご存知ですよね。

KDG 2002/10/16(水) 22:14:46
構造体で定義して必要な変数を並べておいて、呼んでくるということでしょうか?

そうすると、
Kansuu(A ,B, C, D, E);
と書いて、
AとBが入力、CとDとEを出力を期待するような使い方は、
出力はポインター1発で決めていないということで間違いなのでしょうか?

n [E-Mail] 2002/10/16(水) 23:23:06
ポインタ渡し:

 /* (例)intを指すポインタ型の引数を取り、その実体の値を変える関数*/
 void Change( int* pointer_to_a )
 {
  *pointer_to_a = 1;
 }
 void Foo()
 {
  int a = 0; /* この時点でaの値は0。*/

  Change( &a ); /* aを指すポインタを渡す。*/

  /* Change()を抜けると、aの値は1になっている。*/
 }

 /*(例2)*/
 void Kansuu( int a, int b, int* c, int* d, int* e ) {...}
 void Foo2()
 {
  int a, b;
  int c, d, e;
  Kansuu( a, b, &c, &d, &e );
 }

KDG 2002/10/17(木) 08:35:22
レスありがとうございます。

そうすると、
Kansuu(A ,B, C, D, E);
と書いて関数の出力として、C,D,Eを外に取り出そうにもうまくいかない
という理解でいいでしょうか?
(Kansuu(A ,B, &C, &D, &E);

PATIO 2002/10/17(木) 10:23:54
関数に引数を関数からの出力に使用したい場合、普通はポインタ渡しにすることが多いです。
C++だと参照渡しでも値を返せますが、私の場合は明示的に出力であることを示すために
ポインタ渡しにすることが多いです。

この辺は、C言語では基本的な話なのですが、関数の引数渡しには値渡しと参照渡しと言うのが
あります。C++では参照渡しが別に出来たのでポインタ渡しと言わないと区別出来ないですけれ
ど。

この辺の話はC++やCの入門書にも書いてありますのできちんと読んで理解しておいた方が良い
です。

PATIO 2002/10/17(木) 10:24:46
>関数に引数を関数からの出力に使用したい場合、

もとい、

関数の引数を関数からの出力に使用したい場合、

でした。

KDG 2002/10/17(木) 14:20:06
[[解決]]
みなさん。

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

古いスレッドには追加発言できません。