小编bit*_*e35的帖子

获取超出范围的数组元素的地址是否是未定义的行为?

假设我们分配了一个由10个元素组成的字节数组。定义了访问范围内的任何元素。

我了解超出范围的元素读写是未定义的行为。获取超出范围的数组元素的地址是否是未定义的行为?

例:

#include <stdint.h>
#include <string.h>

int main(void)
{
    uint8_t buf[10];
    memset(buf, 0, sizeof(buf));

    // Defined behavior
    uint8_t a_value = buf[9];

    // Defined behavior
    buf[0] = 1;

    // Undefined behavior?
    uint8_t *addr = &buf[10];
}
Run Code Online (Sandbox Code Playgroud)

c arrays undefined-behavior

4
推荐指数
1
解决办法
97
查看次数

标签 统计

arrays ×1

c ×1

undefined-behavior ×1