C 标准允许获取数组元素的地址吗?
下面的代码片段引发了关于根据 C 标准,其有效性:
int array[5]; int *array_begin = &array[0]; int *array_end = &array[5];
具体来说, &array[5] 是合法的 C 表达式吗在这种情况下?
根据 C 标准的合法性
C 标准定义了此表达式的合法性:
解释
通过将这些规则应用于&array[5],我们有:
&array[5] = &*(array + 5) = (array + 5)
由于(数组 5)点超出数组末尾且未取消引用,它是符合 C 标准的合法表达式。
与 C 标准的比较
此行为也符合 C 标准,它允许获取超出数组末尾的元素的地址,前提是它们不是
不同处理的原因
对数组 5 和 &array[4] 1 进行不同处理的决定源于这些表达式的不同目的:
以上是获取 C 数组末尾的地址合法吗?的详细内容。更多信息请关注PHP中文网其他相关文章!