我是靠谱客的博主 动人外套,最近开发中收集的这篇文章主要介绍对结构体中字符数组赋值时,出现表达式必须是可修改的左值的问题。以及strcpy和memcp区别,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
问题:
在C++中为结构体中的字符数组赋值时,出现”表达式必须是可修改的左值“的错误提醒,编译报错“不可指定数据类型”。
struct A
{
int a;
char b;
char c[10];
char d;
};
int main()
{
A aa;
aa.a = 5;
aa.b = 'a';
aa.c = "hello"; //错误! 字符串数组复制不能用“=”,除非定义变量的时候。
aa.d = 'b';
return 0;
}
aa.c="hello";//表达式必须是可修改的左值
aa.c 是一个大小为10的字符数组(字符串)。字符串数组复制不能用“=”,除非定义变量的时候。
示例:
定义变量的时候,用“="给字符数组赋值:
char str[12]="hello world";
另:数组名是常量,不可修改。数组名也就是指向数组在内存中起始地址的指针。
修改方法有以下几种:
1、使用 strcpy(aa.c, "hello"); --->拷贝6个字节(包括最后的'