1

C / C ++で配列を作成して返す次の関数宣言の違いは何ですか?どちらのメソッドも配列を作成して適切な値で埋め、すべてが合格した場合はtrueを返します。

bool getArray(int* array);
bool getArray(int* array[]);

ありがとう

よろしく、STeN

4

4 に答える 4

3

それについて考えるのに役立つなら、それはあるレベルint foo[]と同じことだということを思い出すことができます。int *fooしたがって、この例では、最初の例にはintへのポインターが渡され、2番目の例にはintへのポインターへのポインターが渡されます。

于 2010-05-03T04:19:25.780 に答える
1

bool getArray(int *array);引数としてintへのポインタを取ります(事実上、入力するintの配列)。 bool getArray(int *array[]);intポインタの配列を取ります。最初のものは必要なものですが、呼び出し元は十分に大きな出力配列を割り当ててgetArray()、配列要素をそこにコピーできるようにする必要があります。

Cポインタ/配列宣言を理解する1つの方法は、それらを基本型にアクセスする方法を示すものと考えることです。 int *arrayと言うと*array、intを取得することを意味します。 int *array[]つまり、と言うと*array[x]、intを取得します。 char (*array)[5][2][3]つまり、あなたが言うなら(*array)[0 thru 4][0 thru 1][0 thru 2]、あなたはcharを得るでしょう。

于 2010-05-03T04:21:05.540 に答える
1

ちなみに、投稿したコードはC++です。「C/C++」のようなものはありません...プロトタイプをC++準拠として認識できるようにするのは、関数の戻り型にデータ型「bool」を使用することです。ブール変数はCでは定義されていません。

于 2010-05-03T04:32:17.097 に答える
0

2つ目は、配列へのポインターが必要です。したがって、配列が次のint *getme;場合は、getArray(&getme);

于 2010-05-03T04:22:03.767 に答える