结构体中数组的赋值问题
我在给结构体中的数组赋值的时候显⽰,左操作数不能作为左值。左值就是变量,那么也就是说结构体⾥⾯的数组是⼀个常量⽽不是变量。那么怎么解决这个问题?
typedef struct student
{
char name[20];
int age;
}
int main()
怎么给数组赋值{
student s;
s.name = "gay"; // 错误代码
}
为什么会出现这种现象哪?先看这⼀种现象:
char[20] name;
name = "gay";
上⾯这段代码是不正确的,但是在定义的同时进⾏赋值就不会产⽣错误。
char[20] name = "gay";
上⾯这段代码是正确的代码。那么只要在定义字符数组的同时给字符数组赋初值就可以了。
具体⽤strcpy,或者是strcpy_s函数,后者是前者的安全⽅法。
⽤法如下:
strcpy(name, "gay");
strcpy_s(name, 20, "gay");
如果结构体中的数组类型为⾃定义类型,则使⽤memcpy函数
memcpy(name, "gay", 20);
当然,如果结构体中的数组类型为char,也可以把其改为string,这样就可以直接赋值了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论