C++:使用 Visual Studio 编译器时的常量指针

标签 c++ visual-studio constants

我在使用 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 混淆了。在第一种情况下,charconst。在第二个中,指针是 const。在您的代码中,由于指针不是 const,因此可以同时执行 p++p = s2;

记住规则:“const 应用于它的左边,除非什么都没有,在这种情况下它应用于它的右边。”

关于C++:使用 Visual Studio 编译器时的常量指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22262175/

相关文章:

c++ - C++类中无法重载+运算符

java - 如何确保只有我的原始客户端用于向我的服务器发出请求?

visual-studio - Nuget 包 - feed (VSTS) :Exception 'System.AggregateException' thrown when trying to add source

C#:查找SQL查询涉及的表

python - 在 Python 3.6 和 Visual Studio 上安装/使用 Pillow

菜单打开时键盘快捷键不会触发菜单中的 C++ Qt 操作

C++、switch case 和编译器

php - 在 php 中使用 defined 后,你能用等号给常量赋值吗?

c++ - clang 和 g++ 在处理 const 对象时的差异

c++ - 为什么允许从 const 到非 const 的隐式转换?