通过指针访问数组元素
accessing array elements throug pointers
我正在开发一个绘画程序,并在一个类中创建一组图形 我想将该数组传递给另一个类并循环访问它的元素 我不明白这个问题 主类:
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。
相关文章:
- 如何访问宏中定义的数组元素
- 使用指针访问数组元素时出现意外结果
- CUDA C/C 访问先前的数组元素
- 访问边界外的数组元素会损坏它
- C++ 如何使用类方法正确访问动态数组元素
- 通过指针访问数组元素
- 提高访问大型数组元素的性能
- 在C 中,可以用语法[i,j,..]实现访问数组元素的功能,而语法就像numpy中的ndarray样式一样
- 如何在C 中的2D动态数组中访问1个元素
- 从C++中的指针访问数组元素
- 访问数组元素的不同方式
- 如何访问指针的数组元素
- 使用C++中的指针访问多维数组元素
- 从私有数组类C++访问类对象元素
- 设置数组元素时MSVC访问冲突
- 使用多态基类(包含虚函数)访问数组元素时的类型
- 如何使用指针访问第N-d数组元素
- 在 c++ 中使用数组参数访问单个元素的字符
- 通过名称访问数组元素
- 从char*访问数组元素