通过指针访问数组元素

accessing array elements throug pointers

本文关键字:数组元素 访问 指针      更新时间:2023-10-16

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

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]的值,你会发现它们都是相同的值。此值是数组中第一个元素的地址。没有数组指针这样的东西,只有一个指向第一个元素的指针。

当数组的其他元素跟随第一个元素时,你可以通过在第一个元素的地址(array+1)上加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;
}
}

向量

话虽如此,如果不小心使用本机数组,代码可能会很快变得非常讨厌且难以阅读......这就是为什么您应该按照@Ðаn的建议改用std::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);
}

链接

您可以在此处阅读有关矢量的更多信息。

我没有谈论它,但也有std::array。