1. 指向非常量数据的非常量指针
具有最高的数据访问极限 。不包含const关键字。
2. 指向常量数据的非常量指针
指针可以被改写,使其指向相应类型的任何数据项, 但是它所指向的数据项的值是不能被改写的。
(const char *sPtr) 从右向左读为 sPtr 是一个指针, 指向字符串常量。
使用指向常量数据的非常量指针传递像结构体这样的大数据对象,能同时兼备“按引用调用”的高效性和“按值调用”的安全性。
指向常量数据的非常量指针
3. 指向非常量数据的常量指针
所指向的内存空间总是不变的,而存储在这个内存空间中的数据可以通过指针来改写。数组名的默认类型就是这种指针。
在申明为const的指针时,必须同时对其进行初始化。
int *const ptr; 从右向左读为 sPtr 是一个常量指针, 指向一个整型数据。
指向非常量数据的常量指针
4. 指向常量数据的常量指针
只有最小的访问权限,这样的指针所指向的内存空间总是不变的,且该内存空间中的数据也是不能被改写的。
const int *const ptr; 从右向左读为 sPtr 是一个常量指针, 指向一个整型常量。
{ int x = 5; int y; const int *const ptr = &x; *ptr = 8; //error ptr = &y; //error }