为什么不能将指针分配给数组?
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 结尾,您可以使用 strcpy
或 memcpy
,如下所示:
strcpy(one, real);
或
memcpy(one, real, 7);
在 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 结尾,您可以使用 strcpy
或 memcpy
,如下所示:
strcpy(one, real);
或
memcpy(one, real, 7);