创建数组可以通过以下两种方式完成吗?但并非所有数组都是数组地址的开头并为该类型分配足够的字节。所以我的问题是使用指向字节数组的指针或只使用第一个选项有什么区别?
int numbers[10];
int* num = new int[10];
or
int* num = new int(10);
答案 0 :(得分:4)
你的第二个版本声明了一个指向初始化为10的整数的指针。那不是数组。
答案 1 :(得分:4)
int array[10];
有两种不同的行为。在函数内部使用,它将在堆栈上分配10个未初始化的int。在函数外部,它将在BSS内存中分配10个零初始化的int。
new int[10];
在堆上分配十个未初始化的int。
new int(10);
在堆上分配一个int,值为10.