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