gpt4 book ai didi

c++ - 通过指针访问数组元素

转载 作者:太空宇宙 更新时间:2023-11-04 13:01:48 25 4
gpt4 key购买 nike

我正在开发一个绘画程序,我在一个类中创建了一组图形我想将该数组传递给另一个类并循环遍历它的元素我不明白这个问题主类:

     CFigure* FigureList[Figcount];
CFigure* getfiglist()
{
return *FigureList;
}`

其他类包括:

   CFigure *P=pManager->Getfiglist();
for(int i=0;i<pManager->Getfigcount;i++)
{
*(p+i)->resize(factor); //displays error : operand of * must be a pointer
}

我应该如何使用传递的指针访问数组元素以及我在这里做了什么导致了错误。提前致谢

最佳答案

关于 C++ 中的数组有很多要说的,这里有一些可能有帮助的信息:

原生 C++ 数组

如果你像这样创建一个数组:

int array[10] = {0,1,2,3,4,5,6,7,8,9};

然后您尝试打印 array&array&array[0] 的值,您会发现它们都是相同的值。该值是数组中第一个元素的地址。没有数组指针之类的东西,只有指向第一个元素的指针。

由于数组的其他元素跟在第一个元素之后,您可以通过将第一个元素的地址加 1 (array+1) 来访问它们:

void print(int *array, int length)
{
for (int i=0 ; i<length ; i++){
cout << *(array+i) << endl;
}
}

int main()
{
int array[10] = {0,1,2,3,4,5,6,7,8,9};
print(array, 10);
}

事实证明,您也可以使用正则表达式来访问数组元素,而且效果很好:

void print(int *array, int length)
{
for (int i=0 ; i<length ; i++){
cout << array[i] << endl;
}
}

载体

话虽这么说,如果对原生数组不小心,代码可能很快就会变得非常糟糕且难以阅读......这就是为什么你应该按照建议使用 std::vector由@Ðаn。

vector 具有动态的特殊性,因此您在创建它们时不必指定任何大小,并且您可以添加任意数量的元素,而无需关心任何指针或内存内容。

void print(vector<int> &v)
{
for (int i=0 ; i<v.size() ; i++){
cout << v[i] << endl;
}
}

int main()
{
vector<int> v = {0,1,2,3,4,5,6,7,8,9};
v.push_back(10);
v.push_back(11);
v.push_back(12);

print(v);
}

链接

您可以阅读有关 vector 的更多信息 here .

我没说但是还有std::array .

关于c++ - 通过指针访问数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43850317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com