0

我有一个函数需要返回一个指向数组的指针:

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

在我的主要函数中,我想显示该数组中的一个整数,就像这里在索引 3

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

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

但是,这给了我错误:“数组初始化程序必须是初始化程序列表”

如何在我的主函数中创建一个数组,该数组使用指针来获取与指针处的数组相同的元素?

4

2 回答 2

4

您的代码中存在一些问题:

1)您需要返回一个指向计数数组开头的指针:

return &myInt[0];

或者

return myInt; //should suffice.

然后当你初始化 myInt2 时:

int* myInt2 = count();

您还可以将一个数组复制到另一个数组中:

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

注意复制将使用与第一个不同的内存创建第二个数组。

于 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 回答