2010-12-20 60 views
2

创建数组可以通过以下两种方式完成吗?但并不是所有的数组都是数组地址的开始,并为该类型分配足够的字节。所以我的问题是使用指向字节数组的指针还是仅使用第一个选项有什么区别?指针数组问题

int numbers[10]; 

int* num = new int[10]; 
or 
int* num = new int(10); 
+0

有几个重复的,但我懒得去找到他们。 – dmckee 2010-12-20 01:44:15

回答

4

你的第二个版本声明了一个指向一个初始化为10的整数的指针。这不是一个数组。

+0

什么是int * num [10];一个指向10个元素数组的指针? – RoR 2010-12-20 01:44:23

+2

int * num [10];给出一个包含十个int指针的数组。 – 2010-12-20 01:46:51

4

int array[10];有两种不同的行为。在函数内部使用,它将在堆栈上分配10个未初始化的整数。在函数之外,它将在BSS内存中分配10个零初始化的整数。

new int[10];在堆上分配10个未初始化的整数。

new int(10);分配在堆上一个int,其值10

+0

'int数组[10]'在参数列表中有第三个含义。有**和只有那里**,它只是'int * array'的句法醋。也就是说,你不能在C++中按值传递数组。 – fredoverflow 2010-12-20 09:11:44