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

C 使用指针表示法初始化数组,c,arrays,pointers,initialization,notation,C,Arrays,Pointers,Initialization,Notation,是否可以使用另一个数组中的指针表示法初始化一个数组 为了澄清这一点,如果可以使用sizeof(*table)返回行的大小,为什么分配特定表的行不起作用?是否有办法使用双表2[3]=*表;仅将表的第一行指定给表2 #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; // initi

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

为了澄清这一点,如果可以使用sizeof(*table)返回行的大小,为什么分配特定表的行不起作用?是否有办法使用双表2[3]=*表;仅将表的第一行指定给表2

#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;
}
#包括
int main()
{
双表[2][3]={{1.1,1.2,1.3},{2.1,2.2,2.3};
双表2[2][3]=表;
//初始变量为双表2[3]=*表;
}
是否可以使用另一个数组中的指针表示法初始化一个数组

不,不是。该标准规定:

[…]具有聚合或联合类型的对象的初始值设定项应为元素或命名成员的括号内初始值设定项列表

(C2011,6.7.9/16)


此外,请注意,这样的初始值设定项不是数组文字(它们的形式稍有不同,不允许作为数组初始值设定项),而且尽管数组和指针有着密切的关联,但它们是完全不同的东西。您不能在任何地方将指针(或任何其他内容)分配给整个数组。

不清楚需要什么。数组没有“指针表示法”。数组不是指针-两者都是不同的数据类型!好吧,试试看。它编译吗?不,数组不能分配给。您可以
memcpy()
将一个数组的内容转换为另一个数组。谢谢您。我认为这可能就是正在发生的事情,它试图将一整行表插入到一个次要元素中,因为没有定义赋值。(对吗?)应该有办法删除Olaf中的无用评论。快速的谷歌搜索揭示了“C数组的指针符号”的含义,“谁降低了这一点,谁的名誉点也应该被删除。”。我是个新手,正在努力学习。