C语言const用法简介
来源:互联网 发布:尺度最大的网络女主播 编辑:程序博客网 时间:2024/06/02 03:33
const 的好处,是引入了常量的概念,让我们不要去修改不该修改的内存。直接的作用就是让更多的逻辑错误在编译期被发现。所以我们要尽可能的多使用const。
1 定义常量变量
const 关键字把一个变量声明转换成常量声明
const int MONTHS = 12;// MONTHS代表12的符合常量
在初始化以后,MONTHS成为一个只读值,不能通过赋值、增量或减量运算来改变该变量的值可以用关键字 const 创建一组不可改变的数据:
const int days[2] = {31, 29};
2 const char * pf
在指针和参数声明中使用const 时,需要把让指针本身成为 const 与让指针指向的值成为 const 区分开来
const char * pf = "abc" ; // pf指向一个字符串常量
char const * pf2 = "123" ; // 与上面声明等价
上面的声明表面 pf 指向的值必须保持不变,但是 pf 本身的值可以改变,例如,它可以指向另一个const 值
pf = pf2 ; // pf 指向新的字符串常量// pf [0] = pf2[0] ; // 错误,pf 指向的值不能改变
3 char * const pt
char * const pt = "abc" ;// pt 是一个常量指针
它必须指向同一个地址,但是所指向地址的内容可以改变
pt[0] = pf[0] ; // pt 所指向地址的内容改变// pt = pf ; // 错误,pt 指向地址不能改变
一个位于 * 左边任意位置的 const 使得数据成为常量,而一个位于 * 右边的 const 使得指针成为常量。
4 保护实参数据
const 的常见用法是声明作为函数形参的指针,可能需要把数组名作为实际参数传递,但是数组名是一个地址,这样将运行函数改变数组中的数据,下面的原型防止了这样的情况发生:
void show( const char str[], int n);
该声明表面str 所指向的数据是不可变的,因此如果指针只是用来让函数访问值,将它声明为const 受限指针;如果指针被用来改变调用函数中的数据,则不使用 const。
在函数参数声明中const一般用来声明指针而不是变量本身。
对于另一个参数 n ,如果在函数实现时完全不需要修改它的值,那么 n 是否也应该用 const 声明为常量呢?可以这么做,如果加了const,那么对于这个函数的实现者,可以防止他在实现这个函数的时候修改不需要修改的值(n),这样很好。但是对于这个函数的使用者:
- 这个修饰符号毫无意义,我们可以传递一个常量整数或者一个非常量整数过去,反正对方获得的只是我们传递的一个复制。
- 暴露了实现。我不需要知道你在实现这个函数的时候是否修改过 n 的值。
5 全局变量使用 const
使用全局变量被认为是一个冒险的方法,因为它使得程序的任何部分都可以修改数据,增加了程序的不可控性。如果需要,尽可能多的使用 const 。
- C语言const用法简介
- C语言 const 用法
- C语言关键字const用法
- C语言Const用法总结
- c语言const关键字用法
- C 语言 const 用法介绍
- 话说C语言const用法
- C语言:const的用法
- C语言--const的用法
- 话说C语言const用法
- C语言const常见用法
- 话说C语言const用法
- C语言const的用法
- 话说C语言const用法
- 话说C语言const用法
- 话说C语言const用法
- C语言const的用法
- C语言const的用法
- The remote SSH server rejected X11 forwarding request
- 正则表达式整理格式
- Bear and Three Balls(sort)
- LIS (n*logn)
- 《剑指offer》数组中出现次数超过一半的数字
- C语言const用法简介
- hdu 1159 Common Subsequence(最长公共子序列问题)
- redis哨兵
- Jump Game
- hdoj1070Milk(sort+结构体)
- 某个比赛:Problem H: 1的最少个数
- 【leetcode】136. Single Number
- windows下使用nexus搭建maven私服
- 【BZOJ2768】冠军调查,网络流之最小割