概念
常量指针: 常量指针是指向一个常量(不可改变其值)的指针. 即指针本身的值(指针指向的地址)可改变, 但是指针指向的内容(地址对应的值)不可改变.
指针常量: 指针常量是一个指向固定地址的指针, 即指针本身的值(指针指向的地址)是常量, 不可改变, 但是指针指向的内容(地址对应的值)可改变.
简单写法-
常量指针
const int *ptr;
-
int const *ptr;
这两种意义一样, 只是写法不同.
-
指针常量
int * const ptr;
-
简单理解1: 指针和
const
谁在前就先读谁. 例如:-
const int *ptr;
,const
在前, 指针在后, 那么就是常量指针. -
int * const ptr;
, 指针在前,const
在后, 那么就读指针常量.
-
-
简单理解2: 判断限制域的时候,
const
总是修饰其左侧标识符,如果const
位于最左侧则修饰其右侧标识符. 例如:-
const int *ptr;
,const
在最左侧, 限制右侧int
指针指向的内容就不能改变, 也就是指向的地址的值. -
int * const ptr;
, 指针在const
前, 那么就是指针指向的地址不能改变, 但是指向地址的值可改变.
-
指针常量和常量指针的另外一种表达方式
- 指针常量
char arr[4][3] = {"abc", "a1a","a2a", "a3a"};
常量指针
char *arr1[3] = {"a","b","c"};