将数组传递给 C 和 C 中的函数
问题:
为什么 C 和C 编译器允许在函数签名中声明数组长度,例如 int dis(char a[1])(当它们不允许时)强制执行?
答案:
C 和 C 中用于将数组传递给函数的语法是历史上的奇怪现象,它允许将指针传递给第一个元素
详细说明:
在 C 和 C 中,数组不是通过函数的引用传递的。相反,传递的是指向数组第一个元素的指针。这意味着编译器实际上会忽略函数签名中的 [] 符号。
含义:
此行为可能会导致混乱,因为它看起来好像是数组是通过引用传递的,但实际上,只传递了一个指针。此外,无法从函数签名确定数组的长度,这使得使用可变长度数组变得困难。
历史角度:
允许这种语法的决定是在 20 世纪 70 年代做出的,目的是为了提供一种将数组传递给函数的便捷方法。然而,它已经引起了混乱和潜在的安全漏洞。在现代编程中,建议避免使用此语法,而是使用指针通过引用传递数组。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3