- 指针的声明
string *p //指向string类型的指针,等价于string* p string* p1, p2 //p1是指向string类型的指针,p2为string,等价于 string *p //和string p2 const double *cptr //指向double常量的指针 double *const cptr //指向double类型的常量指针 /// int ival =1024; int *pi=&ival; int **ppi=π //指向指针的指针
- 指针的取值
l 保存一个特定对象的地址
l 指向某个对象后面的另一个对象
l 0值,表示不指向任何对象
int ival=1024; int *pi=0; //不指向任何对象,将其他int值赋给指针是非法的即 int *pi=5 //error int *pi2=&ival //pi2存放ival地址,指向ival pi=pi2; //ok,pi2也指向ival / int *p1=&ival //初始化赋值,等价于int *p1; p1=&ival; int *p2; *p2=&ival //erro类型不匹配
- 指向const对象的指针(实际程序中,作为函数形参,从而确保传递给函数的实际对象在函数中不会因为形参而被修改)
l 指向const对象的指针,不能用来改变其所指的const的值,但是可以指向其他const对象
const double ival=1024; const double ival2=2014; double ival3=3096; const double *cptr;=&ival; *cptr=20; //error cptr=&ival2; //ok,但是可以指向新的const对象 cptr=&ival3; //ok, 或其它非const对象
l 普通、非const对象指针不能指向const对象
const double pi=314; double *ptr=π //error
l 不能用void *指针保存const对象地址,必须用const void *类型const int universe =42; const void *cpv=&universe; //ok void *pv=&universe //error
- const指针
l 指针本身的值不能修改
int num=0; int num2=3; int *const pi=# //ok pi=&num2; //error
l 但其所指向的对象值能否修改完全取决于该对象的类型
int num=0; int *const pi=# //ok *pi=15;
- 指向const对象的const指针
const double pi=3.14; const double *const p=π
[C++]指针知识点小结
最新推荐文章于 2024-08-17 23:59:05 发布