c - 为什么我可以在这里更改 const int 的值?

标签 c pointers

我的代码:

#include <stdio.h>
main()
{
    const int x = 10;
    int *p;
    p=&x;
    *p=20;
    printf("Value at p: %d \n",*p);
    printf("Value at x: %d", x);
}

我得到的输出是:

Value at p: 20
Value at x: 20

因此,常量变量的值发生了变化。这是使用指针的缺点之一吗?

最佳答案

您使用 int* 指向 const int。你应该得到:

 error: invalid conversion from ‘const int*’ to ‘int*’

当你这样做时:

p = &x;

你可能需要更新你的编译器,一个好的编译器应该告诉你这个错误或者至少给你警告。

关于c - 为什么我可以在这里更改 const int 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16390870/

相关文章:

android - 我可以使用 NDK 在 Android 上构建命令行应用程序吗?

c++ - 调用 C/++ 函数时的观察和困惑

c - 修剪 char * 中的前 n 个字符并释放它

c - 关于C中的指针运算

c - xlib编程如何存储鼠标点击事件

c - 从数组构建二叉堆,哪种方法更有效,为什么

c - 指向 C 中结构的指针的工作示例

c - 当您取消引用后增量 C 时会发生什么

c - 如何找到回家的路 - 算法

c - 使用 C 在终端运行的应用程序中打印旋转光标