0

別の関数で配列を変更するには、関数定義でパラメーターを参照として宣言する必要があることに気付きました。

bool sortInput(ifstream &infile, StudentType (&students)[MAXSIZE], int size)

そうしないと適切にコンパイルされないため、プロトタイプを同様に宣言しました。

bool sortInput(ifstream &, StudentType (&students)[MAXSIZE], int);

ただし、これは実際に配列を参照として渡しているようには見えません。別の関数を呼び出しましたが、変更が表示されません (配列を出力するだけで、何も出力しません)。元の関数内で印刷するとすべての変更が表示されるため、配列が変更されたという事実を知っています。それらは単にグローバル配列変数に引き継がれず、それを変更する関数の範囲内に留まらないようです。参考に渡しました。

私は数え切れないほどの他のスレッドと Google 検索を読んだので、関数定義が適切であると確信していますが、プロトタイプの適切な形式はどこにも記載されていません。

4

2 に答える 2

1

配列は既にポインターとして渡されているため、その内容を変更することができます。追加&は必須ではありません。

于 2013-10-07T00:07:36.770 に答える
1

配列はポインタとして渡されるため、参照渡しする必要はありません。パスサイズ。ソート関数では可変サイズのコピーが変更されますが、メイン関数では常にゼロです。

于 2013-10-07T00:08:37.267 に答える