【发布时间】:2011-11-30 16:12:32
【问题描述】:
int buf1[] = {0,0,0,0,0};
int* buf2 = new int[5]; //assume every element is initialzed to 0 as well
我能想到的唯一区别是 buf1 是对数组的引用,而 buf2 是指向数组的指针。换句话说,buf1 总是指向数组,而 buf2 也可以指向其他地方。
除了上面提到的,这两种声明(和初始化数组)的方式还有其他区别吗?
【问题讨论】:
-
你为什么假设每个元素都在
new的情况下被初始化? -
@FredLarson 我只是省略了初始化步骤以节省一些空间。
-
虽然它是专门为 C 设计的,但这可能会有一些用处:c-faq.com/aryptr/index.html
-
@Polynomial 非常有帮助。解决了我的困惑!
-
请注意,截至 2003 年版本的 c++。如果你想让你的第二个例子初始化为 0,你可以写:
int* buf2 = new int[5]();
标签: c++ arrays pointers reference