しまだ

[戻る]
パラメータが渡らない?! 2006/05/14(日) 22:16:54
ABCE(AB, CD, EFG, HIJ, KLM, NOP, QRS);
この中で、前の2つが入力側、後ろの5つは出力、
関数で、値がちゃんと入っているのに、
この関数に戻ってきたとたん、全部0。
全部int型で、型は合ってるにもかかわらず、
値が戻ってこない?
なぜでしょうか?   

こんなの、いつでも使ってるのに。
パラメータが多すぎるのかな。

Blue 2006/05/14(日) 22:35:49
int ABCE( int a, int b, int c, int d, int e, int f, int g )
{
    a = 10;
    b = 20;
    c = 30;
    d = 40;
    e = 50;
    f = 60;
    g = 70;
}

int main()
{
    int AB = 0;
    int CD = 0;
    int EFG = 0;
    int HIJ = 0;
    int KLM = 0;
    int NOP = 0;
    int QRS = 0;

    ABCE( AB, CD, EFG, HIJ, KLM, NOP, QRS );

    std::cout << AB   << std::endl
              << CD   << std::endl
              << EFG  << std::endl
              << HIJ  << std::endl
              << KLM  << std::endl
              << NOP  << std::endl
              << QRS  << std::endl

    return 0;
}

これで全部0が表示されるのはC言語の基本中の基本ですが。
値を設定したいならば、ポインタにするか参照にするかしてください。

一番楽なのは
int ABCE( int a, int b, int c, int d, int e, int f, int g )
を
int ABCE( int& a, int& b, int& c, int& d, int& e, int& f, int& g )

ただし、ここでクリアできたらかといって、なぜこうなるかを調べるのを怠らないでく
ださい。

しまだ 2006/05/15(月) 00:40:50
[[解決]]
ありがとうございます。
int ABCE( int& a, int& b, int& c, int& d, int& e, int& f, int& g )
で回避しました。
関数側は、
*Hc,*Hd,*He,*Hf,*Hg
という用い方をしないとだめですね。
勉強になりました。

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