为什么阵列不接受指针作为初始化器?

时间:2013-10-01 13:15:25

标签: c++ pointers initialization

我在一个返回指针的类中编写了一个函数:

       DATA_TYPE* foo(){
       ...
       return DATA
        }

在我的主要部分我试着写

    int[10] = {Class.foo()};

但这不起作用,但为什么呢

    int[10] = {[12,...,123]};

工作?

1 个答案:

答案 0 :(得分:2)

为什么要起作用?指针不是数组;这两种类型 没有关系。数组是聚合,需要聚合 初始化。指针是标量。

请注意,使用聚合初始化(或其等效项)时 在您提供的C ++ 11)的统一初始化语法中 各个元素的初始值设定项,不是的整体 阵列。 (初始化char[]有一个特殊例外 用字符串文字。)所以你试图初始化一个 带有指针的int,需要显式 reinterpret_cast