有关const关键字的整理
来源:互联网 发布:php上传图片并压缩 编辑:程序博客网 时间:2024/05/16 07:50
顾名思义const是constant的缩写,意义为永恒不变的意思。常常被翻译为常量,常数等意思。但是很不幸,正是由于这一点导致很多C程序员认为const修饰的值为常数。这是不正确的,const修饰的是只读变量,在预处理(编译)时是不知道具体内容的。
在C语言中,这样写一个函数对吗?为什么呢?
const int MAX = 100;
int array[MAX];
其实这个程序在C语言的编译器中运行是会产生错误警告的,因为C语言中const修饰的是变量,而数组在定义是必须告诉编译器它的元素个数,因此MAX是不能作为变量出现在数组中的。这个程序在C++编译器上运行正确,想想为什么 ?
用const修饰的只读变量可以节省内存,提高效率。因为编译器通常不会为const变量分配空间的,将他们存在符号表中,使其成为一个编译期间的值,没有读写内存的操作,自然提高了效率。
从汇编的角度来说,定义const变量只是给出了对应内存的地址,而不是像#define那样给出了立即数。因此,在运行程序的过程中const只有一个拷贝,而宏定义则有若干个。另外,#define宏定义是在预编译时进行替换,而const变量是在编译时确定其值。,#define宏定义是没有类型的,而const变量有固定的类型。
下面是介绍几种关于const的用法:
1.修饰一般变量:修饰符可放类型说明前,也可放在类型说明后。例如:const int i =10;或int const i = 10;
2.修饰数组:int const a[5] ={1,2,3,4,5};或 const int a[5] = {1,2,3,4,5};
3.修饰指针:const int *p; // p 可变,p 指向的对象不可变
int const *p; // p 可变,p 指向的对象不可变
int *const p; // p 不可变,p 指向的对象可变
const int *const p; //指针p 和p 指向的对象都不可变
4.修饰函数参数:当你不希望函数的参数被函数体内进行任意的改变时,可以用const进行修饰。
例如:int fun(const int n) ;这就告诉编译器在函数内部不能对变量n进行改变,以防止出错。
5.修饰函数返回值:const还可以修饰函数返回值,例如:const int fun(void);在另一链接文件中引用只读变量。
- 有关const关键字的整理
- 有关C语言中的关键字const
- 有关const的点点滴滴
- const关键字的用法
- c的 const关键字
- C++的const关键字
- c的 const关键字
- const关键字的使用
- const关键字的用法
- const关键字的用法
- Const关键字的用法
- const 关键字的总结
- Const关键字的使用
- const关键字的作用
- const关键字的作用
- 关键字const的含义
- 关键字const的详解
- 关键字const的含义
- DEFY添加联系人时出现“进程:com.motorola.contacts 意外停止”
- 数据库基础知识
- art of disassembly----chapter01----lesson11---how is a disassembler working----01
- 关于线程池的需求性
- 切记,切忌!——转载(收藏以备用)
- 有关const关键字的整理
- iOS与Android开发者,到底谁挣的多?
- java中this的用法
- VC++新建工程里面各项的含义
- vc++ 与 android/java 进行socket通信
- nginx+tomcat实现动静分离
- 深入分析 Linux 内核链表 list_entry...
- 时间轮盘TimeWheel
- 在Fedora 15下安装Oracle Java JDK以及对于alternatives的一些感受