通过指针修改const限定对象

che*_*oky 0 c

以下代码按我的预期编译和运行.

#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;
}
Run Code Online (Sandbox Code Playgroud)

此代码调用未定义的行为?

das*_*ght 5

是的,此代码调用未定义的行为.根据C标准,

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