二维指针
Two-dimensional array of pointers
我想编写一个将指针返回二维指针数组的函数。我有这个数组:Organism* worldTab[20][20];
,我的朋友建议以这种方式编写我想要的功能:
Organism** getWorldTab() {
return worldTab[20];
}
正确吗?当我想执行此操作时(temp
是Organism*** temp;
(:
*temp = world.getWorldTab();
Visual Studio引发异常
Exception thrown: write access violation.
this->temp was 0xCCCCCCCC.
我很确定getWorldTab()
功能是一个问题。
WorldTab定义:Organism* worldTab[20][20];
数组不是指针,尽管在某些情况下可以将其转换为指向其第一个元素的指针,而到达数组的指针完全不同于指向指针的指针。
指向您的数组的指针具有Organism* (*)[20][20]
类型。
指向数组的第一个元素的指针可能是您的朋友的想法,但是它具有Organism* (*)[20]
类型,而不是Organism**
或Organism***
,并且不能转换为两个。
(作为奖励, worldTab[20]
超出了范围,因为它将是存在的二十个二十个数组。而且,在分配给*temp
之前,您从未初始化temp
,这是违规访问的来源。(
虽然您可以写
Organism* (*getWorldTab())[20] {
return &worldTab[0];
}
Organism* (*temp)[20] = getWorldTab();
或简单
Organism* (*temp)[20] = worldTab;
我认为您应该学会使用std::vector
和std::array
- 它们缓解了很多痛苦。
(另外,是2017年。虽然很有趣,但没有必要像1969年那样编程。(
相关文章:
- 为什么指针在对二维数组进行排序时无法正常工作?
- 用于输出矩阵的二维指针
- 如何通过引用或指针访问二维矢量
- 如何使用二维语法访问指针
- 坚持将双指针管理的内存复制到二维数组
- 如何使用智能指针在二维上声明数组?
- 二维数组中的指针算术
- 为什么这个指针到指针的二维数组像这样分配新的 int
- 二维指针
- C++ ->尝试逐字阅读一行文本。如何使指针等效于用于存储输入的当前二维数组
- C++ 二维数组和指针引用
- 在 C++ 中访问二维指针数组中的值
- 指向二维数组的指针
- 如何初始化所有元素为 0 的指针的二维动态内存数组
- C++:二维指针数组排序:选择排序不适用于某些实例
- 运算符 [] 重载常量引用二维指针
- C++删除二维指针向量
- 如何删除这个二维指针数组?制作析构函数
- 创建一个二维指针数组
- 如何在二维指针数组中打印给定索引处的值