常来指针的用法
1,指向常量的指针
2,常量指针
3,指向常量的常量指针
这3个我有些糊涂,请高手解释下哦
#include <iostream>
#include <iomanip>
using namespace std;
void main(){
int x=58,y=98;
const int *p=&x;
y=*p;
*p=65;
p=&y;
cout<<*p<<" ";
}
红色部分,是错误的,但是,我不理解,请解释。
[解决办法]
常来...
无法对声明的const变量赋值
const int *p = &x
const int cnVal = x;
上面和下面这个一个道理
[解决办法]
瞄准了固定目标的导弹----目标不能改装,导弹却可能再瞄准另一个同类目标
瞄准点固定的导弹----导弹只能打到哪里,哪里是什么就不管了
瞄准点固定了、目标不能改变了
[解决办法]
1.指向常量的指针:
const int *pa;
int const *pa;
两者等价。因为指向常量的指针有时候会指向常量,所以它具有这个性质:“不能靠解引用改变它指向的对象的值”,以此保护它所指向的常量的常量性:
*pa =d; // 不可行(d是已经声明过的整型)
但指针本身的值是可变的:
pa=& d; // 可行(d是已经声明过的整型)
指向常量的指针有时候也会指向变量,如下:
int t,u;
const int *pa;
pa =&t; //可行,指向变量t
pa =&u; //也可行,指向变量u
我们可以把它理解成:“为了指向常量而发明的指针”,这样比较贴切。
2.常量指针
“常量指针”即指针本身的值是常量,但“能靠解引用改变它指向的对象的值”,如下:
pa=&d; // 不可行(d是已经声明过的整型)
*pa =d; // 可行(d是已经声明过的整型)
因为常量指针也是一种const常量,所以它同样必须在第一次声明时就初始化,不过它的初始值缩小为只能是变量(的地址),因为只有变量才能确保以后能靠解引用而改变它指向的对象的值。这使得常量指针不象一般的const常量,用变量或常量初始化都可以。
也就是说,常量指针反而总是指向变量的。
3.指向常量的常量指针
const int *const c=&e; //e是已经声明过的整型,整型常量或整型变量都可以
把它理解成一个普通的const常量,同时被剥夺了“靠解引用改变它指向的对象的值”的性质的就行