话说C语言的const3
const在C语言中算是一个比较新的描述符,我们称之为常量修饰符,意即其所修饰
的对象为常量(immutable)。
我们来分情况看语法上它该如何被使用。
步骤/方法
- 01
这里还要说明的一点是在函数参数声明中const一般用来声明指针而不是变量本身。 例如,上面的size_t len,在函数实现的时候可以完全不用更改len的值,那么是否 应该把len也声明为常量呢?可以,可以这么做。
- 02
我们来分析这么做有什么优劣。 如果加了const,那么对于这个函数的实现者,可以防止他在实现这个函数的时候修 改不需要修改的值(len),这样很好。 但是对于这个函数的使用者,
- 03
这个修饰符号毫无意义,我们可以传递一个常量整数或者一个非常量整数过 去,反正对方获得的只是我们传递的一个copy。
- 04
暴露了实现。我不需要知道你在实现这个函数的时候是否修改过len的值。 所以,const一般只用来修饰指针。 再看一个复杂的例子 int execv(const char *path, char *const argv[]); 着重看后面这个,argv.它代表什么。 如果去掉const,我们可以看出 char * argv[]; argv是一个数组,它的每个元素都是char *类型的指针。
- 05
如果加上const.那么const修饰的是谁呢?他修饰的是一个数组,argv[],意思就是 说这个数组的元素是只读的。那么数组的元素的是什么类型呢?是char *类型的指 针.也就是说指针是常量,而它指向的数据不是。 于是 argv[1]=NULL; //非法 argv[0][0]='a'; //合法
赞 (0)