const 修饰词的用法

     C 语言中 const 关键字是 constant 的缩写,译为常量、常数等,但 const 关键字不仅仅是用于定义常量,还 可以用于修饰数组、指针、函数参数等。  
1) 修饰变量
C 语言中使用 const 修饰变量,功能是对变量声明为只读特性,并保护变量值以防被修改。例如:
const int i = 5 ;
这个例子表明整形变量 i 具有只读性,不能够被修改;若想对其重新赋值,例如 i=10 则是错误的用法。需
要注意的是, const 定义变量的同时还必须对其初始化, const 可以放在数据类型的前面或者后面,比如上述
例子也可以写成:
int const i = 5
此外, const 修饰变量还起到了节约空间的目的,通常编译器并不给普通 const 只读变量分配空间,而是 将它们保存在符号列表中,无需读写内存操作,程序执行效率也会提高。
2)修饰指针
C 语言中 const 修饰指针需要特别注意,共有两种形式,一种是用来限定指向空间的值不可修改;另一种 是限定指针不可修改,例如:
int i = 5 ;
int k = 10 ;
int const * p1 = & i;
int * const p2 = & k;
对于指针 p1 const 修饰的是 *p1 ,即 p1 指向的空间的值不可改变,例如 *p1 = 20; 就是错误的用法;但是 p1的值是可以改变的,例如 p1 = &k; 则没有任何问题。
对于指针 p2 const 修饰的是 p2 ,即指针本身 p2 不可更改,而指针指向空间的值是可以改变的,例如 *p2 = 15;是没有问题的,而 p2 = &i; 则是错误的用法。
3) 修饰函数参数
   在 C 语言中 const 修饰函数参数对参数起限定作用,防止其在函数内部被意外修改,所限定的参数可以是 普通变量也可以是指针变量。
1. 函数指针名中的const修饰:
 例如: void (*const task_handle)(void); 
 *const 修饰这个函数指针,函数指针本质也是地址,加上const 意思是这个函数指针地址不会变,因为函数指针是会被调用的,如果地址改变,可能调用就会出错。
      void (*const task_handle)(void) =uart_task_handle;
      void  uart_task_handle(void)
      {   
           //串口处理函数
      }
     
2. 参数中的const
 int save_data(void const *buf,int len )  
   调用函数时会传递参数,形参指针指向一个数组或者变量。  const 修饰 *buf *buf 指针指向的数据内容不能改变。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值