当我尝试修改传递给接收数组作为const参数的函数的数组内容时会发生什么
答案 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;
}