使用指针修改 const 变量

int main (void)
{
    const int foo_readonly = 10;
    int *foo_ptr;

    foo_ptr = (int *)&foo_readonly; /* (1) This casts away the const qualifier */
    *foo_ptr = 20; /* This is undefined behavior */

    return 0;
}

引用 ISO / IEC 9899:201x ,第 6.7.3 节§2:

如果尝试通过使用具有非 const 限定类型的左值来修改使用 const 限定类型定义的对象,则行为未定义。 […]

(1) 在海湾合作委员会中,这可以发出以下警告:warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]