我有一个需要返回指向数组的指针的函数:
int * count()
{
static int myInt[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
return &myInt[10];
}
在我的main函数中我想显示该数组中的一个int,就像这里的索引3
一样int main(int argc, const char * argv[])
{
int myInt2[10] = *count();
std::cout << myInt2[3] << "\n\n";
return 0;
}
然而这给了我错误:“数组初始值设定项必须是初始化列表”
如何在main函数中创建一个数组,该数组使用指针获取与指针数组相同的元素?
答案 0 :(得分:4)
代码中的一些问题:
1)你需要在count:
中返回一个指向数组开头的指针return &myInt[0];
或
return myInt; //should suffice.
然后当你初始化myInt2时:
int* myInt2 = count();
您还可以将一个数组复制到另一个数组中:
int myInt2[10];
std::copy(count(), count()+10, myInt2);
注意复制将使用与第一个不同的内存创建第二个数组。
答案 1 :(得分: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;
}