金庸群侠传x离开队友:跪问.........

来源:百度文库 编辑:高考问答 时间:2024/04/30 05:16:27
# include <iostream.h>
void main()
{
const int M=10;
int *y=&M;
cout<<y<<endl;
}
为什么用这个程序不能输出M的地址值,编译时出现这样的错误提示'initializing' : cannot convert from 'const int *' to 'int *'???

指针是有类型的,不同类型指针指向不同类型的对象。

不同类型的指针不能赋值运算。

const int 和 int 是不同的类型。

可改成同是int或同是const int就可以了。

#include <iostream.h>
void main()
{
const int M=10;
const int *y;
y= &M;
cout<< *y<<endl;
}
输出10

c++ 安全特性,为了防止试图篡改常数,所以把常数指针负值给变量指针的类型转换时不允许的,所以你无法把常数指针负值给变量指针

int *y=&M;
修改为
const *y = &M;

爱卿平身,朕不晓得

int *y=&M; 变为int y=&M;

是的,int *y=&M是变量

同雨愁轩,亲自调试一下不就知道了?