c++中怎样定义动态数组?

如题所述

1、new 动态定义数组

2、因为new 就是用来动态开辟空间的,所以当然可以用来开辟一个数组空间。这样,下面的语句:

int size=50;
    int *p=new int[size]; //是正确的

3、但是二维动态数组能不能也这样定义呢

 int size=50,Column=50;
  int (*p)[Column]=new int [size][Column]

(1)首先 new int[size][Column] 就是动态生成时确定的,所以它没有错,那么就是 int(*p)[Column],这句有问题了,这句为什么不对呢, 那是因为,这是一个定义语句,而定义语句先经过编译器进行编译,当编译器运行到此处时,发现Column 不是常数,因此不能通过编译。

(2)而之所以编译器认为Column 不是常数,是因为编译阶段,编译器起的作用是查语法错误,和预分配空间,它并不执行程序,因此,没有执行那个赋值语句(只是对这个语句检查错误,和分配空间),因此编译阶段,它将认为column 是个变量。所以上面的二维数组定义是错误的, 它不能通过编译。

改成这样:

int size=50
  int (*p)[50]=new int [size][50]

便正确了。

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答