问题描述
- 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的,造成错误。
解决方案二:
const int a = 10; int *p = (int *)&a; *p = 100; a的值到底有没有改变
解决方案三:
你这是实验,还是挑战C++系统?
C++
const 代表不可改变
const int a=10 ;表示 a 是常量,值为常量表达式 10;
int *p =(int *)(&a);//虽然运行正常,但是造成程序行为分裂,不是好的风格
int*p= &a ;类型不匹配,所以错误。
解决方案四:
类型不匹配cannot convert from 'const int *' to 'int *'
时间: 2024-10-11 19:13:28