首页 > 后端开发 > C++ > 为什么我不能在 C 和 C 中直接为数组赋值,但可以在结构体中赋值?

为什么我不能在 C 和 C 中直接为数组赋值,但可以在结构体中赋值?

Mary-Kate Olsen
发布: 2024-12-05 20:08:15
原创
732 人浏览过

Why Can't I Directly Assign Arrays in C and C  , But I Can Within Structs?

C 和 C 中的数组赋值

C 和 C 允许在结构体中按成员方式对数组进行赋值,但一般情况下不允许。这种行为是语言历史演变的结果。

最初,C 中的数组被建模为内存中的指针,称为“熟数组”。当引入结构体时,结构体中的数组会被区别对待以确保内存安全。这允许在结构内按成员方式分配数组,而不会影响与现有代码的兼容性。

相反,C 的原始设计不支持在结构外部分配数组。这是由于担心指针变基以及缺少声明为函数参数的数组的大小信息。为了避免引入错误和兼容性问题,首选使用 memcpy 进行显式赋值。

但是,正如 Luther Blissett 所指出的,C 关于结构赋值的规范显式允许对包含的数组进行成员赋值。这是设计的一个意想不到的副作用,但它被认为是一种促进结构内数据复制而不破坏既定模式的方法。

因此,支持结构内数组的成员分配,但通常不是C 早期设计决策的遗产以及该语言随后的发展,导致了嵌入在结构中的数组和独立使用的数组之间的区别。

以上是为什么我不能在 C 和 C 中直接为数组赋值,但可以在结构体中赋值?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板