数组被赋予一个带const参数的函数

时间:2017-05-07 08:39:06

标签: c

当我尝试修改传递给接收数组作为const参数的函数的数组内容时会发生什么

1 个答案:

答案 0 :(得分:0)

如果数据实际上是const,则会调用未定义的行为

#include <stddef.h>

void zlast(const int *s, size_t len) {
    int *ss = (int *)s; /* remove const'ness; silence warning */
    ss[len - 1] = 0; /* possible UB */
}

int main(void) {
    const int x[] = {1, 2, 3};
    int y[] = {0, 0, 0, 0, 0, 42};
    zlast(y, sizeof y / sizeof *y); /* ok */
    zlast(x, sizeof x / sizeof *x); /* UB */
    return 0;
}