看看这段代码
#include<stdio.h>
int main()
{
const int a=7;
int *p=&a;
(*p)++;
printf("*p=%d\np=%u\na=%d\n&a%u",*p,p,a,&a);
getch();
}
Run Code Online (Sandbox Code Playgroud)
你得到的输出是
*p=8
p=1245064
a=8
&a1245064
Run Code Online (Sandbox Code Playgroud)
这怎么可能??我们将变量a声明为常量.这是不是意味着在pgm执行过程中,a指向的位置永远不会改变?
这是未定义的行为 - 在您的情况下,它正如您所描述的那样工作,但它也可能导致程序崩溃或导致任何其他问题.在您的情况下const,不会阻止编译器在可修改的内存中分配变量,因此您在技术上可以通过获取指向该变量的指针并通过指针来修改它.