const疑問

今天在做一道筆試題時遇到的這個問題:

#include <iostream>
using namespace std;
int main()
{
    const int a =10;
    int* p =(int*)(&a);
    *p=20;
    cout<<"a = "<<a<<",*p = "<<*p<<endl;
    return 0;
}

輸出的值爲 a= 10 *p=20。
這裏寫圖片描述
在調試過程中發現a的值爲20,而把a的值賦給整形變量b時b的值爲10,而且a輸出時也爲10,無法理解?

我以前看過說const是一個僞常量,const的局部變量是在棧區域,它的值是可以間接改變的。思考是不是因爲C和C++的區別啊,所以後來以C語言的格式寫了同樣的程序。

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

果不其然,C語言中輸出的值是 a = 20,*p = 20。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章