为什么我不能将数组分配为&a =&b?

Sta*_*911 7 c

我有一个问题,分配如下数组:

int a[];
int b[] = {1,2,3};
&a = &b;
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用指针,但我想这样试试......

caf*_*caf 17

您无法在C中分配数组.您可以使用在以下位置memcpy()声明的函数复制它们<string.h>:

int a[3];
int b[] = {1,2,3};

memcpy(&a, &b, sizeof a);
Run Code Online (Sandbox Code Playgroud)

  • @Jonathan Leffler:“&amp;array”是一个经过深思熟虑的选择 - 当复制单个对象(这里是单个数组)时,我认为应该首选“memcpy(&amp;dest, &amp;src, sizeof src)”形式(或者使用“sizeof dest”) ` - 它们应该是相同的)。这是为了一致性 - 如果“a”和“b”的类型是非数组类型,则相同的“memcpy()”行将起作用。你可能不同意,但希望你能看到选择背后肯定有“判断”。 (2认同)

Oli*_*rth 14

正如您所发现的那样,这种方法不起作用.您无法在C中分配数组.

但是,结构是可分配的.所以你可以这样做:

typedef struct
{
    int x[3];
} T;

T a;
T b = { { 1, 2, 3 } };

a = b;
Run Code Online (Sandbox Code Playgroud)

  • @ Starfighter911:那不是我写的代码!只需`T a;`,而不是`T a [];`. (3认同)