为什么C中的数组会衰减到指针?

我想知道数组“衰减”到指针的奇怪的C现象,例如当用作函数参数时。那似乎太不安全了。显式地传递长度也很不方便。而且我可以通过值完美地传递其他类型的集合-结构- 结构不会衰减。

这个设计决定背后的原理是什么?它如何与语言整合?为什么结构有所不同?


莫回无
浏览 450回答 3
3回答

鸿蒙传说

带上您的时间机器,回到1970年。开始设计一种编程语言。您希望以下代码进行编译并执行预期的操作:size_t i;int* p = (int *) malloc (10 * sizeof (int));for (i = 0; i < 10; ++i) p [i] = i;int a [10];for (i = 0; i < 10; ++i) a [i] = i;同时,您需要一种简单的语言。非常简单,您可以在1970年代的计算机上进行编译。“ a”衰减为“ a的第一个元素的指针”的规则可以很好地实现。
打开App,查看更多内容
随时随地看视频慕课网APP