1.常量指针
1)本质是指针,只不过指针本身的值是个常量
2)注意:常量指针必须初始化,一旦初始化其值就不会再改变。
3)按照从左往右的顺序读,就是 const+指针(int *),e.g:const int * p;
4)常量指针可以指向常量对象,也可以指向非常量对象
5指针的指向可以修改,但是指针指向的值不可以改变
2.指针常量
1)本质是指针,只不过指向的对象是个常量
2)普通的指针不可以指向常量对象
3)其实指向常量的指针也是可以指向非常量对象的
4)按照从左往右的顺序读,就是指针+const,e.g:int * const p;
5)指针的指向不可以修改,但是指针指向的值可以修改
6)e.g:
const int num1=18;
int *p1=&num1;//error,普通的指针不可以指向常量对象
const int num2=23;
const int *p2=&num2;//right,指向的对象是个常量
int num3=1830;
const int*p3=&num3; //right,可以指向非常量对象
3.指针函数
1)本质是函数,只不过返回值是一个指针
2)按照从右到左的顺序,e.g:
声明一个名为p的函数,该函数的参数是两个int型的引用,返回值类型是int*
int *p(int &,int &);
4.函数指针
1)本质是指针,只不过指向的对象是函数
2)按照从右到左的顺序,e.g:
有括号先读括号,明显括号内是一个指针,p指向一个函数,该函数有两个参数,都是int型的引用,返回值是类型是int
int (*p)(int &,int &);