-3

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

(注意这很可能是回答的扩展: 指针和分配

例如 :

#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.

但是=新的int数组[100];似乎工作。为什么 ?

4

1 回答 1

2

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

int local_array[100];
array = local_array;

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

于 2013-04-16T12:02:39.997 回答