const的地址变化
如题: const int x=3,int *y=&x;
理论上是成立的,因为const只是将X的变成常量无法修改,int *y=&x;只是将X的地址赋给指针Y,实则X的值并没有改变,可视频中说是错误用法
如题: const int x=3,int *y=&x;
理论上是成立的,因为const只是将X的变成常量无法修改,int *y=&x;只是将X的地址赋给指针Y,实则X的值并没有改变,可视频中说是错误用法
2018-10-19
确实是错误用法,C++信奉一个原则,不管你设计的程序是否涉及到错误方法使用,只要存在错误,不管用没用到,就是错的!我们看你说的例子,x是常变量,不可以修改,如果y是指向x的指针,那么*y也不能修改,*y可以看做是x的引用,毕竟引用本质就是指针啊,也得是常变量,这点没问题吧,记住这就是编译器在上述中得到的信息点,接下来声明指针y,声明指针y的时候到底要不要表明,*y是const,如果表明,没问题了,这点没有疑问吧,如果不标明呢,这个语句int *y=&x意味着什么呢?*y可以修改,是变量,这是C++语法上允许的,但是上面的指出了*y必须常变量才能符合要求,所以如果不声明,前后矛盾,C++编译器只能报错,我们看上面提到的原则,虽然你没有通过*y修改x的值,但是只要声明这个变量,提供了这种修改值的方法,就是错的,没有理由!
举报