C ++数组和“new”关键字

时间:2017-08-05 12:51:41

标签: c++ arrays pointers

所以我在这里有这个代码我试着创建一个不同大小的二维数组, 首先我声明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];

}

抱歉我的baddd英语

1 个答案:

答案 0 :(得分:1)

在第一个程序中声明了一个指针数组

int* arr[3];

在第二个程序中,分配了一个整数数组

int* arr = new int[3];

所以例如表达式

arr[0]

的类型为int

如果你想分配一个指针数组,你应该写

int ** arr = new int *[3];
    ^^               ^

在这种情况下表达式

arr[0]

的类型为int *,您可以写

arr[0] = new int[5];