文章目录
- 一、const 普通用法
- 二、常量指针 ( 指向 常量 的指针 | 被指向的内存不能被修改 )
- 三、指针常量 ( 指针不能被修改 )
- 三、指向 常量 的 指针常量
- 四、const 在 * 左右的意义
一、const 普通用法
const 关键字 在 C 和 C 中的表现不同 , 本篇博客主要介绍 C 语言中的 const 用法 ;
const 的用法 : 下面的
个写法作用相同 , const 可以在 数据类型 前面 , 也可以在 数据类型 后面 ;
代码语言:javascript复制// 下面两个 const 用法相同
const int a;
int const a;
二、常量指针 ( 指向 常量 的指针 | 被指向的内存不能被修改 )
下面的 c 是 指向 常量字符 的指针 , const char
表示 常量字符 , const char *
表示 指向 常量字符 的指针 ;
- 该指针 指向的 内存空间 不能被修改 ,
- 指针可以被修改 ;
// 指向 常量字符 的指针
const char *c;
上述代码 指针指向的 内存 是常量 ; 常量指针
三、指针常量 ( 指针不能被修改 )
下面的 d 是 指向 字符 的 常量指针 , char *
表示一个指向 char
字符的指针 , 后面加上 const
表示该指针 是 常量指针 ;
- 该指针 指向的 内存空间 可以被修改 ,
- 指针 不能 被修改 ;
char * const d;
上述代码 指针 是常量 ; 指针常量
三、指向 常量 的 指针常量
下面的 c
是 常量指针 指向一个常量 , 指针 和 指针指向的内存 , 都不能被修改 ;
const char * const c;
四、const 在 * 左右的意义
普通的数据类型 , const 在数据类型左右作用相同 ;
指针数据类型 , const 在 * 左侧是 常量指针 ( 内存不能修改 ) , const 在 * 右侧是 指针常量 ( 指针不能被修改 ) ;
指针常量与常量指针 : 需要查看 const 修饰的是 指针变量 , 还是 修饰 指针变量 指向的内存空间 ;
- const 在
*
右边 ( 指针常量 | const 修饰的是变量 ) : const 修饰的是 指针变量 , 如char * const d
, const 修饰的是char *
, 指针不能被修改 ; 这是 指针常量 ; - const 在
*
左边 ( 常量指针 | const 修饰的是数据类型 ) : const 修饰的是 指针变量 指向的内存空间 , 如const char *c
, const 修饰的是char
,char
数据不能被修改 , 这是 常量指针 , 指向常量的指针 ;
const 修饰的是右边的内容 ,
- 右边是 变量 , 相当于 const 在 * 右边 , 指针常量 , 指针不能修改 ;
- 右边是 数据类型 , 相当于 const 修饰的是 内存中的数据 , 指针指向的内存不能被修改 ;