使用指针表示法初始化数组

时间:2016-12-06 16:18:27

标签: c arrays pointers initialization notation

是否可以使用另一个数组中的指针表示法初始化数组?

为了澄清,如果你可以使用sizeof(* table)来返回行的大小,为什么它不能分配特定表的行?有没有办法使用double table2 [3] = * table;仅将第一行表分配给table2。

#include <stdio.h>

int main()
{
    double table[2][3] = {{1.1, 1.2, 1.3},{2.1, 2.2, 2.3}}; 
    double table2[2][3]=table;

    // initial variant was double table2[3]=*table;
}

1 个答案:

答案 0 :(得分:0)

  

是否可以使用另一个数组中的指针表示法初始化数组?

不,不是。

指定

  

[...]具有聚合或联合类型的对象的初始值设定项应该是元素或命名成员的大括号括起来的初始值设定项列表。

(C2011,6.7.9 / 16)

此外,请注意,这样的初始化程序数组文字(形式略有不同,不允许作为数组初始化程序),尽管数组和指针具有紧密关联,他们是完全不同的东西。你不能在任何地方为整个数组指定一个指针(或其他任何东西)。