为什么不能将指针分配给数组?

Why is not possible to assign a pointer to an array?

在 C 中,我正在对此进行编码

char * real = strdup("GEORGE");
char one[1024];
one = real;

它给出了错误:

invalid initializer

有什么建议吗? 我有没有可能使字符数组等于字符指针?

在您的代码中,one 是数组类型的变量。因此,

 one = real;

试图分配给数组类型,这是不允许的。

具体来说,数组名称不是可修改的左值,赋值运算符仅适用于作为 LHS 操作数的可修改左值。

引用 C11,章节 §6.5.16

An assignment operator shall have a modifiable lvalue as its left operand.

然后是第 6.3.2.1 章,(强调我的

A modifiable lvalue is an lvalue that does not have array type, does not have an incomplete type, does not have a const qualified type, and if it is a structure or union, does not have any member (including, recursively, any member or element of all contained aggregates or unions) with a const qualified type.

需要使用strcpy()将内容复制到数组中

C 需要数组初始值设定项中的常量。您可以这样做:

char one[1024] = "GEORGE";

或这个

char one[1024] = {'G','E','O','R','G','E'};

但是在任何情况下都不允许分配一个指向数组的指针,无论是否有初始化器。

另一方面,您可以复制 char 指针的内容到一个数组中。根据您的源数组是否以 null 结尾,您可以使用 strcpymemcpy,如下所示:

strcpy(one, real);

memcpy(one, real, 7);