【C语言笔记】理解:const int a; int const a; const int *a; int const *a; int* const a; int const * const a;

前言

const 在C/C++中的作用很大,可以提高程序的稳定性、安全性和可靠性。

const修饰变量和类型

该如何理解下面这些东西:

  • const int a;//常量化变量a的值
  • int const a;//常量化变量a的值
  • const int *a;//常量化指针目标表达式,即无法改变指针指向的变量的值,但可以改变指针指向的地址
  • int const *a;//常量化指针目标表达式,即无法改变指针指向的变量的值,但可以改变指针指向的地址
  • int *const a;//常量化指针变量,即无法改变指针指向的地址,但可以改变指针指向的变量的值
  • int const * const a;//常量化指针变量及其目标表达式,既不可以修改指针指向的变量的值,也不可以修改指针指向的地址

const修饰变量:常量化变量 

常量化变量,是为了使得变量无法被更改,以下两种形式等价:

const <数据类型> 变量名 = [<表达式>] 

 <数据类型> const 变量名 = [<表达式>] 

const int a = 10;
a = 20;//error

int const a = 10;
a = 20;//error

变量有const修饰时,想通过指针间接访问变量,指针也要有const的修饰:

const int * p = &a;
//int * p = &a;//error

const修饰指针:常量化指针目标表达式

一般形式如下:

const <数据类型> * <指针变量名称>[=<指针运算表达式>]

 <数据类型> const * <指针变量名称>[=<指针运算表达式>]

int c = 10, d = 20;
const int *a = &c;
//*a = d;//error
a = &d;//OK

int c = 10, d = 20;
int const * a = &c;
//*a = d;//error
a = &d;//OK

常量化指针目标是限制通过指针改变其目标的数值 ,但<指针变量>存储的地址值可以修改。

const修饰指针:常量化指针变量

一般形式如下:

<数据类型> * const <指针变量名称>[= <指针运算表达式>] 

int c = 10, d = 20;
int * const a = &c;
//a = &d;//error
*a = d;//OK

常量化指针变量使得<指针变量>存储的地址值不能修改。但可以通过 *<指针变量名称>修改指针所指向变量的数值。

const修饰指针:常量化指针变量及目标表达式

一般形式如下:

const <数据类型> * const <指针变量名> = <指针运算表达式> 

int c = 10, d = 20;
int const * const a = &c;
//*a = d;//error
//a = &d;//error

常量化指针变量及其目标表达式,使得既不可以修改<指针变量>的地址,也不可以通过*<指针变量名称>修改指针所指向变量的值。

总结

  1. 就近原则:const离谁近,谁就不可以被修改;
  2. 定义const变量时,通常需要对其进行初始化,以后没有机会再改变其值;
  3. 合理使用关键字const,提高程序的安全性和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一起学嵌入式啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值