使用指標修改 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]