Cplusplus-cpp-return-arrays-from-functions
提供:Dev Guides
C ++の関数から配列を返す
C ++では、配列全体を関数の引数として返すことはできません。 ただし、インデックスなしで配列の名前を指定することにより、配列へのポインタを返すことができます。
あなたが関数から一次元配列を返したい場合は、次の例のようにポインタを返す関数を宣言する必要があります-
int * myFunction() {
.
.
.
}
覚えておくべき2番目の点は、C ++がローカル変数のアドレスを関数の外部に返すことを推奨していないため、ローカル変数を static 変数として定義する必要があることです。
今、10個の乱数を生成し、配列を使用してそれらを返し、次のようにこの関数を呼び出す次の関数を検討してください-
#include <iostream>
#include <ctime>
using namespace std;
//function to generate and retrun random numbers.
int *getRandom( ) {
static int r[10];
//set the seed
srand( (unsigned)time( NULL ) );
for (int i = 0; i < 10; ++i) {
r[i] = rand();
cout << r[i] << endl;
}
return r;
}
//main function to call above defined function.
int main () {
//a pointer to an int.
int* p;
p = getRandom();
for ( int i = 0; i < 10; i++ ) {
cout << "*(p + " << i << ") : ";
cout << *(p + i) << endl;
}
return 0;
}
上記のコードを一緒にコンパイルして実行すると、次のような結果が生成されます-
624723190
1468735695
807113585
976495677
613357504
1377296355
1530315259
1778906708
1820354158
667126415
*(p + 0) : 624723190
*(p + 1) : 1468735695
*(p + 2) : 807113585
*(p + 3) : 976495677
*(p + 4) : 613357504
*(p + 5) : 1377296355
*(p + 6) : 1530315259
*(p + 7) : 1778906708
*(p + 8) : 1820354158
*(p + 9) : 667126415