我只是想知道为什么下面的代码需要堆分配才能使它工作?
(n.b。这可能是答案的延伸:Pointers and assignment)
例如:
#include <iostream>
#include <fstream>
using namespace std;
int *array;
int main(){
array = int array[100];
}
创建编译器错误
test.cpp:7:14: error: expected '(' for function-style cast or type construction
array = int array[100];
~~~ ^
1 error generated.
但= = new int array [100];似乎工作。为什么?
答案 0 :(得分:2)
它不需要动态分配。但要指定指向数组的指针,需要一个数组指向:
int local_array[100];
array = local_array;
您的代码尝试声明一个数组,然后在表达式中使用该声明; C ++根本不允许你组合声明和表达式。