历史原因。最早k&r c考虑到数组主要应用场景只需要赋值传参用首地址,就没支持,那时候结构体也不能赋值。后来标准化后结构体支持了,数组仍不支持,因为之前定义函数参数中的数组类型会退化为首地址指针,出于兼容性考虑后面就不能改了。
副作用是c++模板在参数中使用真数组类型得用引用包一层。
Go语言是Ken Thompson参与设计的新语言,就恢复了数组赋值的正常语义。
【 在 lexluthor 的大作中提到: 】
: 如下代码:
:
: int arr[5] = { 1, 2, 3, 4, 5, };
: ...................
--
FROM 61.148.244.*