我在使用 Visual Studio 2012 的 C++ 编译器时遇到了一个奇怪的情况。
这只是一个测试代码,应该会失败:
char s1[5] = "new";
char s2[5] = "old";
char const* p = s1;
p++; // should fail
p = s2; // this line should also fail;
谁能告诉我,它为什么有效?
最佳答案
这些线路没有理由失败。也许您将 char const*
与 char * const
混淆了。在第一种情况下,char
是const
。在第二个中,指针是 const
。在您的代码中,由于指针不是 const
,因此可以同时执行 p++
和 p = s2;
。
记住规则:“const
应用于它的左边,除非什么都没有,在这种情况下它应用于它的右边。”
关于C++:使用 Visual Studio 编译器时的常量指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22262175/