为什么 C 和 C 语言支持结构体中的成员数组赋值
虽然 C 和 C 语言通常禁止数组的成员赋值,但它在结构中受支持。这种明显的矛盾源于这些语言的历史演变。
在结构定义中,引入数组作为为数据分配连续内存的便捷方式。然而,在 C 的早期迭代中,数组仅仅是指向内存区域的指针。因此,将一个数组分配给另一个数组会导致指针分配,而不是按元素复制。
即使在 K&R C 中添加结构体赋值,这种行为仍然存在。编译器没有为结构体定义单独的赋值运算符,而是简单地使用内存复制操作(memcpy)来分配所有成员。这有效地将数组包含在结构中。
因此,结构赋值在结构上下文中隐式引入了数组赋值的形式。然而,这种赋值仍然仅限于结构体内部,并且将一个数组直接分配给另一个数组,即使它包含在结构体中,在 C 和 C 中仍然不支持。
结构体内部数组和结构体内部数组之间的这种区别通用数组有两个用途:
以上是为什么 C 和 C 允许在结构中进行成员数组赋值,但不允许在独立数组中赋值?的详细内容。更多信息请关注PHP中文网其他相关文章!