0

配列へのポインターを返す必要がある関数があります。

int * count()
{
    static int myInt[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    return &myInt[10];
}

メイン関数内で、インデックス 3 のように、その配列の int の 1 つを表示したい

int main(int argc, const char * argv[])
{   
    int myInt2[10] = *count();

    std::cout << myInt2[3] << "\n\n";
    return 0;
}

ただし、これによりエラーが発生します:「配列初期化子は初期化子リストでなければなりません」

ポインターを使用してポインターの配列と同じ要素を取得する配列をメイン関数内に作成するにはどうすればよいですか?

4

2 に答える 2

4

コード内のいくつかの問題:

1) count の配列の先頭へのポインタを返す必要があります。

return &myInt[0];

また

return myInt; //should suffice.

次に、myInt2 を初期化すると、次のようになります。

int* myInt2 = count();

1 つの配列を別の配列にコピーすることもできます。

int myInt2[10];
std::copy(count(), count()+10, myInt2);

コピーすると、最初の配列とは別のメモリを使用して 2 番目の配列が作成されることに注意してください。

于 2013-09-27T19:34:26.787 に答える
1

ポインターは必要ありません。参照は問題ありません。

int (&count())[10]
{
    static int myInt[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    return myInt;
}

int main(int argc, const char * argv[])
{   
    int (&myInt2)[10] = count();

    std::cout << myInt2[3] << "\n\n";
    return 0;
}
于 2013-09-27T19:34:27.053 に答える