为什么num1.name不能定义,而num1.num可以被定义(什么叫左值不能被修改
name是char数组名,也就是首地址。可以换一种方式:
num1.name[0]='a';
num1.name[1]='f';
字符串不能直接赋值,需用字符串拷贝函数 strcpy() , 同时加 #include<string.h> 头文件。
当我们在使用结构体的成员变量时,会出现"左值不能被修改"的情况,是因为有些结构体的成员变量是常量,不能被修改。例如,num1.name无法定义,是因为name可能被定义为了常量(比如char * const name),而num1.num可以正常定义,是因为num没有被定义为常量。如果要修改一个常量的值,会导致编译器报错。
解决这个问题的方法就是需要在结构体定义时特别注意,如果需要修改某个成员变量的值,该成员变量就不能被定义为常量。如果要对一个常量进行修改,需要使用指针来修改。例如,如果name被定义为了常量,可以使用指向char类型的指针来修改字符串的值,但是不能修改指针本身的值(即指向其他字符串)。