网站建设插入歌曲百度域名购买
区分常量指针和指针常量,并且认识什么是top-level const和low-level const。
1.判别:
拿到一个指针(例如const int* a),就从左往右读,只看const和*。const读作常量,*读作指针,int类型这些不用管。
2.指针常量
int a=2;
int* const b=&a;//b++;b--; error,指针b是常量,不能修改b
*b=34; //可以改变b指向的内容,即是*b。
*在前,const在后,所以这是指针常量。
指针常量,即指针是个常量,即是指针不能被改变,即是b不能被修改,b++,b--这些是错误的。
3.常量指针
int a=5;
const int* b=&a;
int const* c=&a; //和const int* c=&a;是一样的意思b++; //这个是正确的
//*b=45; error。指针指向的内容,即*b,*b是常量,不能被修改。const char* str="3434";
str++; //可以的
//*str='2'; error,不能改变c指向的内容
const在前,*在后,所以这个是常量指针。
常量指针就是指向常量的指针,指针不是常量。可以修改指针(b),但不能修改指针指向的内容(*b)。
4.指向常量的指针常量
int a=34;
const int* const b=&a;//a++; //error
//*a=43; //error
指针b和指针指向的东西*b都不能被修改。
5.top-level const(顶层const)
其就是指针常量。
6.low-level const(底层const )
其就是常量指针。