Sak*_*and 1 c arrays string pointers assignment-operator
数组的名称是指向第一个元素的指针.那么为什么一个字符数组不能分配另一个数组呢?
#include<stdio.h>
int main()
{
char str1[]="Hello";
char str2[10];
char *s="Good Morning";
char *q;
str2=str1; /* Error */
q=s; /* Works */
return 0;
}
Run Code Online (Sandbox Code Playgroud)
首先,数组的名称是不一样的指针的第一个元素.在某些情况下,数组名称会衰减到指向第一个元素的指针,但通常它们不相同.
在那里遇到你的问题,数组名称不是可修改的左值,因此无法分配它们.
引用章节§6.3.2.1 C11,Lvalues ,数组和函数指示符
[...] 可修改的左值是一个左值,它没有数组类型,没有不完整的类型,没有const限定类型,如果是结构或联合,则没有任何成员(包括,递归地,所有包含聚合或联合的任何成员或元素)具有const限定类型.
对于赋值运算符,LHS应该是可修改的左值.
引用C11,第§6.5.16章,
赋值运算符应具有可修改的左值作为其左操作数.
在你的情况下,
str2=str1;
Run Code Online (Sandbox Code Playgroud)
str2不是可修改的左值.因此,你得到错误.
FWIW,复制的内容,你可以使用strcpy()从string.h头文件.
| 归档时间: |
|
| 查看次数: |
661 次 |
| 最近记录: |