const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性,另外,了解const的作用,在看别人的代码时,对理解对方的程序有一定帮助。
1、const可以理解成是”只读变量“的限定词,从这里可以看出,const修饰的是变量,跟常量是不同的,常量是被编译器放在内存中的只读区域,当然也就不能够去修改它。而”只读变量“则是在内存中开辟一个地方来存放它的值,只不过这个值由编译器限定不允许被修改。const就是用来限定一个变量不允许被改变的修饰符。因为const声明的变量是只读变量,所以它不能通过赋值、增量或减量运算来修改该变量的值,只能够初始化一个const变量,初始化完成后,不能再改变它。
**const int nochange;nochange = 12;/*这是不允许的*/**
**const int nochange = 12;/*这是可以的*/**
2、在声明指针时使用关键字const,一定要区分让指针本身成为const与让指针指向的值成为const区分开来。
const float *pf;/*pf指向一个常量浮点数值,pf指向的值必须是不变的,但pf本身的值可以改变*/
float *const pt;/*pt是一个常量指针,它必须总是指向同一个地址,但所指向的值可以改变*/
const float *const ptr;/*ptr必须总是指向同一个位置,并且它所指位置存储的值也不能改变*/
**float const *pfc;等同于const float *pfc;**
把const放在类型名的后边和*的前边,意味着指针不能用来改变它所指向的值。总之,一个位于*左边任意位置的const使得数据成为常量,而一个位于*右边的const使得指针自身成为常量。
**常见用法是声明作为函数形式参量的指针。**
3、对全局数据使用const。
首先遵循外部变量的惯用规则:在一个文件中进行定义声明,在其他文件中进行引用声明(使用extern关键字)。
~~~
/*file.c——定义一些全局变量*/
const doubule PI = 3.141;
/*file2.c——使用在其他文件中定义的全局变量*/
extern const double PI;
~~~
其次是将常量放在一个include文件中。这时还必须使用静态外部存储类:
~~~
/*constant.h——定义一些全局变量*/
static const double PI = 3.141;
/*file1.c——使用在其他文件中定义的全局变量*/
#include "constant.h"
/*file2.c——使用在其他文件中定义的全局变量*/
#include "constant.h"
~~~
如果不使用关键字static,在文件file1.c和file2.c中包含constant.h将导致每个文件都有统一标示符的定义声明。
- 前言
- (四)回调函数
- (一)while(1)死循环与for(;;)死循环的区别
- (二)static关键字
- (三)函数
- (四)可变参数函数
- (五)setjmp和longjmp
- (六)指针
- (七)回调函数
- (八)字符串
- (九)动态内存分配
- (十)结构体
- (十一)深入理解指针
- (十二)命令行参数
- (十三)printf、fprintf、sprintf和snprintf函数
- (十四)const关键字详解
- (十五)字符串输入函数fgets、gets和scanf
- (十六)字符串输出函数puts、fputs和printf
- (十七)字符/字符串输出函数fputc、fputs、putc、putchar和puts
- (十八)字符/字符串输入函数fgetc、fgets、getc、getchar和gets
- (十九)restrict关键词
- (二十)scanf函数详解
- (二一)内联函数
- (二二)位操作
- (二三)errno变量
- (二四)内存分配