数组刚开始一直认为不能被直接赋值,但是当用到结构体之后发现,结构体里面的数组类型变量竟然可以直接被赋值。
首先,赋值就是将一段内存中的内容拷贝到另一段内存当中。在C语言中赋值要求,等号左边必须是变量。
当我们试图对数组进行赋值,数组名代表首地址,而他是一个常量,将常量赋值给一个常量显然是不行的。
如
int main(){
char n[20];
char m[20];
scanf("%s",n);
scanf("%s",m);
printf("%s\n",n);
printf("%s\n",m);
n=m;
printf("%s",n);
} 运行是会报错的
但是在结构体中,将一个结构体变量的内容赋值给一个结构体变量这是行得通的,因为此时被赋值的是变量。相当于把一个结构体变量的内容完全拷贝一份放到另一个结构体变量。
int main(){
typedef struct stu{
char name[20];
}p;
p a={"wo wo"};
p b;
b=a;
printf("%s",b.name);
}
是可以成功将a的内容赋值给b
typedef是为结构体类型struct stu起个别名 p