为什么数组指针需要堆分配? (错误:预期'('用于函数式转换或类型构造)

时间:2013-04-16 11:44:42

标签: c++ compiler-errors

我只是想知道为什么下面的代码需要堆分配才能使它工作?

(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];似乎工作。为什么?

1 个答案:

答案 0 :(得分:2)

它不需要动态分配。但要指定指向数组的指针,需要一个数组指向:

int local_array[100];
array = local_array;

您的代码尝试声明一个数组,然后在表达式中使用该声明; C ++根本不允许你组合声明和表达式。