你能取得数组元素的地址吗?
下面的代码一直是编程中争论的话题社区:
具体来说,&array[5]在这种情况下是否是合法的C代码的问题有
C 标准的立场
根据 C 标准,具体为:
的含义&array[5]
将这些规则应用到 &array[5],我们有:
合法吗?
是的,合法。该标准明确允许指针指向超出数组末尾的一个元素,前提是它们没有取消引用。在这种情况下,&array[5]仅用于获取地址,而不是访问该地址处的值,因此它在标准允许的范围内。
为什么与array 5 或 &array[4] 1?
&array[5] 的行为与 array 5 或 &array[4] 1 不同,因为和 [] 运算符的优先级与 [] 隐含的一元 * 运算符的行为相结合。具体来说:
相反,&array[5] 的计算方式就好像删除了 & 运算符并将 [] 运算符更改为运算符,结果是数组 5,但没有对一元进行计算* 运算符。
以上是在 C 中获取数组元素末尾一位的地址合法吗?的详细内容。更多信息请关注PHP中文网其他相关文章!