c++关于const的问题
const int x=3; int *p=&x; 为什么不可以? 还有const int *p=&x; const 对*p起作用 则p的值可以变,即p可以指向其他地址;*p是p所指向地址中的值;既然*p不可以改变,是不是说x的值也不可改变;但是我看我的课件上说的是x的值可以改变。。。。求指导
const int x=3; int *p=&x; 为什么不可以? 还有const int *p=&x; const 对*p起作用 则p的值可以变,即p可以指向其他地址;*p是p所指向地址中的值;既然*p不可以改变,是不是说x的值也不可改变;但是我看我的课件上说的是x的值可以改变。。。。求指导
2016-09-18
const int x=3; int *p=&x; 为什么不可以? //const把变量x转变为常量3,int*p=&x意思是把指针p指向了X,这个从程序操作上来说x的值不可以变了,但你可以通过改变p的值来改变了x的值
例如;
const int x=3;
int*p=&x;
p=4; //此时就违背了const的作用,可以理解为编译冲突,所以编译器是不允许这样编译的,所以不编译这程序。
const int *p=&x; const 对*p起作用 则p的值可以变,即p可以指向其他地址;*p是p所指向地址中的值;既然*p不可以改变,是不是说x的值也不可改变
const int*p=&x; //固定了*p的值,变为了常量,int*const p这种类型就是把指针p的指向给固定了即只能有一个地址 例如 const int *p=&x,这样就不能再&y了
总结一下就是
const 在*前就是固定*p的值 但可以改变别名和指向别的地址来改变*p
const在*后就是固定指针的指向,即只可以改变所指向的地址的值来变化 *p的值
所以上面的写法你可以通过改变别名x的值,如x=3来改变p 但不可以直接改变 p=6来改变p的值,却可以把const int*p添加别的地址,如const int*p=&y ,通过改变y或者x的值来影响p因为x,y仍未为变量
举报