今天在做一道笔试题时遇到的这个问题:
#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。