比较两种声明数组的方法

Ter*_* Li 1 c++ arrays pointers reference

int buf1[] = {0,0,0,0,0};

int* buf2 = new int[5]; //assume every element is initialzed to 0 as well
Run Code Online (Sandbox Code Playgroud)

我能想到的唯一区别是buf1是对数组的引用,而buf2是指向数组的指针.换句话说,buf1总是引用数组,而buf2也指向其他地方.

除了上面提到的那个,声明(和初始化数组)的两种方式之间还有什么区别吗?

Ker*_* SB 9

buf1是一个自动对象(如果它在全局范围内,则为静态对象); *buf2是一个动态的对象.也就是说,生命周期buf1是自动控制的,而生命周期*buf2则由你来管理.(buf2直到你说出类似的东西delete[] buf2;.)

初始化者也不同; buf1是大括号初始化,而*buf2默认初始化(即其int元素未初始化).

  • +1:事实上`buf1`是自动的,而'buf2`是动态的,这是迄今为止最重要的区别. (2认同)