通过指针修改const限定对象

时间:2017-06-08 19:12:41

标签: 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;
}

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

1 个答案:

答案 0 :(得分:5)

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

  

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