在C语言中,为什么数组之间不可以直接赋值,而结构体之间可以直接赋值,求了解的给详细解答一下,谢谢!!!

如题所述

因为数组名就是数组第一个元素的指针常量,是一个常量左值。可以赋值的必须是非常量左值,常量左值和右值是不可以被赋值的。

以上是我个人的理解,有疑问继续追问。追问

什么是常量左值,右值?还有结构体为什么可以啊?

追答

右值就是临时变量和字面量,左值就是有一定生命期的变量或者常量。非常量左值就是可以赋值的,因为不是常量,所以可以放到等号左边。

结构体变量在做赋值的时候都是左值,并且等号两边类型匹配,所以可以赋值。

前面我说了数组名是指向第一个元素的指针常量,所以假如你可以赋值,那赋值的并不是数组的元素,只是地址赋值而已,所以数组直接赋值是不允许的。

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答