首页 > 解决方案 > 我有 2 段 c++ 代码应该工作相同

问题描述

这是第一段代码,输出 44:

const int a[] = {3};
int* b = (int*)&a[0];
*b = 4;
cout << a[0] << *b;

这是第二个,输出 34:

const int a = 3;
int* b = (int*)&a;
*b = 4;
cout << a << *b;

我不知道为什么会有区别。你们能解释一下吗?

标签: c++pointersconstants

解决方案


指向声明为的变量 的指针const 只能分配给也声明为的指针 const。您违反了规则,理想情况下您的编译器应该阻止您这样做。

没有gcc,,clangMSVC防止此类错误,并且如评论中所述,您有未定义的行为,而不是至少一个警告。但是zapcc 编译器会使您的程序崩溃并带有Segmentation fault.


推荐阅读