C基础之CONST

C语言的基础知识是最重要的,即使内核的一些东西都是各个基础知识的综合运用。有些程序不理解其实就是对基础概念理解不透彻,或者说比较含糊。下面说说对CONST的基本理解。
const 是constant 的缩写,“恒定不变”的意思。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。const不是意味着“常量”,可以理解为“只读”。其值不可修改。不是说它的值永远都不能改,是指它修饰的字符不能去修改它的值。可以通过指针或者其它方式修改它的值。
const定义的常量叫做常变量原因有二:
const定义常量像变量一样检查类型
const可以在任何地方定义常量,编译器对它的处理过程与变量相似,只是分配内存的地方不同
1、常整型数(变量常量化)
const int a;
int const a;
两个效果是一样的。表示a是一个常整型数。
例:
const int a = 1;
int *p=&a;
*p=100;
上面例子说明了:const修饰的内容不是说a的内存的数据不能修改,而是说他限制了通过当前指定的修饰符a(标签符)去改变内存的值。它可以通过指针去修改它的值。
2、常量指针
const int *p;
int const *p;
两个效果是一样的。表示一个常量指针。
常量化的是指针所指向的目标数据。指针指向可以变化。
字面理解:可以理解为常量化了数据的指针,指针本身可变。
3、指针常量
int * const p;
常量化的是指针变量的值,指针变量的值不能变,指针变量的指向不能变,指针所指向的目标的值可以变化。
字面理解:可以理解为指针化的常量,是个常量,被修饰为指针。因为是常量所以被修饰为指针后它的指向就肯定不能变了。但内容可以变。
4、const int * const p;
即不能更改指针的指向也不能更改指针所指向内容的值(变量的值)。
5、const用于函数参数
例:int sum(const int arry[ ],int n);
const告诉编译器,该函数不能修改arry指向的数组的内容。这样使用并不是要求原数组是常量,而是该函数在处理数组时将它视为常量,这样使用const可以保护数组的数据不被修改。同样的,const int arry[ ]用const int *p代替也成立,表示p所指向的地址的内容不能被修改。
像这样的函数在内核里面随处可见。
6、用const 修饰函数的返回值
如果给以“指针传递”方式的函数返回值加const 修饰,那么函数返回值(即指针)的内容不能被修改,该返回值只能被赋给加const 修饰的同类型指针。
例如函数
const char * GetString(void);
如下语句将出现编译错误:
char *str = GetString();
正确的用法是
const char *str = GetString();
7、const初始化
常量必须初始化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值