为什么会有这种情况?

http://img4.mukewang.com/5a2800620001900d06660305.jpg

我想了解的是为什么指针指向常量的地址,输出值时,地址是常量的地址,结果却不一样,我知道常量不能修改,但是为什么会有这种情况?谢谢大家。

 #include<stdio.h>
 main()
{
    const int il=80;
    int *pi;
    pi= (int *) &il;
    * pi=20;
    printf("%d+pi\n",*pi);
    //pi所指向地址上的值
    printf("%s+pi\n",pi);
    //pi指针所指向地址
    printf("%d+il\n",il);
    //il的值
    printf("%s+il\n",&il);
    //il的地址
    getchar();
}


丶低调丶
浏览 1089回答 1
1回答

anet

所谓的常量不能修改,是指c语言的语法层面,实际上程序在内存中的数据都可以被修改,外挂就是这么干的。常量限定,仅仅存在于编译阶段检测,通过指针修改常量,属于未定义行为,成功与否,取决于你使用的编译器。
打开App,查看更多内容
随时随地看视频慕课网APP