”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 为什么 C 和 C++ 忽略函数签名中的数组长度?

为什么 C 和 C++ 忽略函数签名中的数组长度?

发布于2024-12-26
浏览:423

Why Do C and C   Ignore Array Lengths in Function Signatures?

将数组传递给 C 和 C 中的函数

问题:

为什么 C 和C 编译器允许在函数签名中声明数组长度,例如 int dis(char a[1])(当它们不允许时)强制执行?

答案:

C 和 C 中用于将数组传递给函数的语法是历史上的奇怪现象,它允许将指针传递给第一个元素

详细说明:

在 C 和 C 中,数组不是通过函数的引用传递的。相反,传递的是指向数组第一个元素的指针。这意味着编译器实际上会忽略函数签名中的 [] 符号。

含义:

此行为可能会导致混乱,因为它看起来好像是数组是通过引用传递的,但实际上,只传递了一个指针。此外,无法从函数签名确定数组的长度,这使得使用可变长度数组变得困难。

历史角度:

允许这种语法的决定是在 20 世纪 70 年代做出的,目的是为了提供一种将数组传递给函数的便捷方法。然而,它已经引起了混乱和潜在的安全漏洞。在现代编程中,建议避免使用此语法,而是使用指针通过引用传递数组。

最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3