const int a=10; int *p =(int *)(&a);

#include
using namespace std ;
int main ()
{
const int a=10;
int *p =(int *)(&a);//运行正常
为什么 int *p = &a 报错
cannot convert from 'const int *' to 'int *'

因为是const int *,传给int *必须类型转换。之所以有这样的规定是为了防止程序员忘记这是const的,造成错误。

你这是实验,还是挑战C++系统?
C++
const 代表不可改变
const int a=10 ;表示 a 是常量,值为常量表达式 10;
int *p =(int *)(&a);//虽然运行正常,但是造成程序行为分裂,不是好的风格
int*p= &a ;类型不匹配,所以错误。

类型不匹配cannot convert from 'const int *' to 'int *'