c/c++中的char数组类型,不支持直接通过等号来对变量赋值,如果用等号,那就是另外一个意义了:对char*指针赋值,而不是对char*数组所指向的值赋值。但这里需求是要对stu.name这个char数组(也就是char*,指针类型)所指向的值赋值,而不是修改stu.name这个指针的值,所以用等号,能编译通过,但是意义不一样
或者这么记:
对于指针类型来说,用等号只是修改该指针的指向,使其指向另外一个值;
如果用非指针类型,用等号就是复制内存数据到新的变量中,也就是确切修改了该变量的值
c语言由于是最早的一批语言,当时设置者没有考虑到编程发开者的易用性,所以对于字符串这种变量,没有提供现成的类型,而是需要你手动构建一个char数组,用char数组来存储字符串(c++提供了单独的类型string,就是专门解决c语言这个问题),或者这么说吧,c语言中,你要存储字符串,只能用char数组,如果只是一个char类型(单个字符,不是一连串的字符串),才可以用char类(或者int型)