【发布时间】:2017-08-05 12:51:40
【问题描述】:
所以我在这里有这段代码,我尝试创建一个不同大小的二维数组,
首先我声明了 3 个指针,然后我为它们分配了不同的数组,希望它能正常工作并且做得很好,但是有问题,在第二个代码中编译器给出了一个错误(int* 类型的值不能分配给实体输入int )所以这意味着它们不再是我认为的指针,但是为什么会这样,我在这里缺少什么?除了其中一个在堆栈中声明而另一个在堆上之外,这两个代码的最大区别是什么
int main()
{
int* arr[3];
arr[0] = new int[5];
arr[1] = new int[2];
arr[2] = new int[6];
delete[] arr[0];
delete[] arr[1];
delete[] arr[2];
}
//第二个代码
int main()
{
int* arr = new int[3];
arr[0] = new int[5];
arr[1] = new int[2];
arr[2] = new int[6];
}
对不起我的英语不好
【问题讨论】:
-
应该是
int** arr = new int*[3];。 -
不要做你现在正在做的事情,也不要使用嵌套向量,而是实现一个适当的二维数组。例如阅读this answer。
-
@BaummitAugen:OP 不想要他的 sn-p 中的矩阵。所以
vector<vector<int>>在这里似乎更合适。 -
@Jarod42 哦,对了。我的阅读很差。对不起你和罗恩。
-
@BaummitAugen 别提了。我现在删除的评论是使用向量的向量。