今天在做一道筆試題時遇到的這個問題:
#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。