1
下面的代碼編譯並按我的預期運行。通過指針修改一個const限定對象
#include <stdio.h>
int main(void) {
const char C1 = '1';
char const C2 = '3';
printf("%c %c", C1, C2);
char *pC1 = &C1; *pC1 = 'H';
char *pC2 = &C2; *pC2 = 'o';
printf("%c %c", C1, C2);
return 0;
}
此代碼調用未定義的行爲?
如果啓用警告/錯誤,此代碼**不會**編譯:http://ideone.com/df4xiC –
在一天結束時,您仍然在修改「const」。是的,這是UB。 –
這個代碼*必須*給你一個診斷,因爲'&C1'和'pC1'不兼容。在C中,診斷是錯誤的。 –