C、表达式必须是可修改的左值(改变结构成员的值)

标签 c pointers struct

<分区>

我是一个极端的新手,我只是想学习..这是我创建的简单结构

struct Student{
char FirstName[20];
char LastName[20];
char StudentID[10];
char Password[20];}

然后我创建了一个指针数组;

struct Student *StudentList[10];

然后我调用我的“注册”函数并将数组中的第一个元素作为参数传递,这是为了将值更改为数组中特定的结构元素,例如我想更改学生的详细信息;

Register(&StudentList[0]);

进一步,我的功能;

void Register(struct Student *student);
void Register(struct Student *student) {student->FirstName = "John";}

这是一个非常简化的示例,很抱歉无法在此处正确粘贴代码。

但是,当我尝试分配一个值时,为什么会出现“表达式必须是可修改的左值”。

最佳答案

您不能像 C 中那样分配数组类型,"John"char[5] 类型的数组。

strcpy(student->FirstName, "John");

会做,或者,更好的是,某种形式

strncpy(student->FirstName, "John", 20);

这样你就可以避免溢出 char 缓冲区。

关于C、表达式必须是可修改的左值(改变结构成员的值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49920887/

相关文章:

c - 在 osx (.so) 中构建共享库

c++ - 常量和指针

C 指针数组初始化

iphone - 如何正确定义结构

c - 如何在 ARM 中使用字符串?

c - 消耗指针是什么意思?

objective-c - 在 ubuntu 上不用 gnustep 编译 objective-c 程序

c++ - 带有结构指针数组的getline

包含 std::list 的结构的 C++ 初始化

c# - 结构包装器类型的默认相等性比较 C#