【扩展知识7】谈const有关的那些事
来源:互联网 发布:监控视频播放软件 编辑:程序博客网 时间:2024/05/24 00:18
【扩展知识5】谈const有关的那些事
扩展目录:
1. const修饰变量
2. conts 修饰参数
3. const修饰函数返回值
( 1 )const的目的
const是constant的缩写,是恒定不变的意思。但在C语言中修饰的变量是只读的变量,其值在编译时不能被使用,因为编译器在编译时不知道其的存储的内容。
推出目的:是为了取代预编译指令,即消除预编译的缺点,同时继承它的优点。(const在C++里已替代了预编译指令的位置)
编译器通常不为普通 cconst 只读变量分配存储空间,而是将它们保存在符号表中,这使
得它成为一个编译期间的值,没有了存储与读内存的操作,节省了空间,避免不必要的内存分配,同时提高效率
[程序1]:
//功能:测试const变量的值不可以改变和定义数组是需确定元素的个数#include <stdio.h> int main( void ){ constint n= 100;//cosnt修饰的是n,所以n为只读,不可以改变其值 //会报错!! //因为定义数组时必须确定元素的个数 (即常量) //所以证明const修饰的n不是常量 intarray[ n ]={ 0 }; //定义n个整形数组,并全初始化为0 //当我们改变n的值时,编译器会报错:n为只读变量 //n=200; return0;}
[程序2]
//测试case 语句后必须为常量值#include <stdio.h> int main( void ){ constint n= 4; //n不是常量,只是只读 int num= 4; switch(num ) { //第一个case语句报错:caseexpression not constant //再次证明const修饰的n不是常量 casen: { printf("n= 4\n" ); break; } case3: { printf( "n= 3\n" ); break; } //省略.... default: { printf( "n= 其他\n" ); break; } } return 0; }
( 2 )const修饰变量
(a) cosnt修饰一般变量
(b) cosnt修饰指针变量
const int *p; // 指针变量p可变,p指向的对象(内容)不可变int const *p; // 指针变量p可变,p指向的对象(内容)不可变int * const p; // 指针变量p不可变,p指向的对象(内容)可变const int * const p; //指针变量p和p指向的对象(内容)都不可变
怎么读?(参考书上的),方法:去除类型
const int *p; // const修饰*p,所以不可变;p是指针,没被const修饰,可变int const *p; //const修饰*p,所以不可变;p是指针,没被const修饰,可变int * const p; // cosnt修饰的是指针p,不可变;*p没有被修饰,所以可变const int * const p; //const修饰了*p和p,所以都不可变。
( 3 )const修饰函数参数
cosnt修饰参数,表明该参数不允许改变!
如strcpy程序(考的特多的函数),防止strSrc被修改,使用const限制
char *strcpy( char *strDest, const char*strSrc ){ //判断下面的表达式是否成立,不成立退出 assert(( strDest!= NULL ) && ( strSrc!= NULL) ); //断言 char*address= strSrc; //保存strSrc //一一赋值 while(( *strDest++= *strSrc++ )!= '\0' ) //!=优先级高于= { ;//空语句 } return address; //返回原字符strSrc,支持链式表达}
( 4 )cosnt修饰函数返回值
const修饰函数返回值,就是反之返回值被修改
【指尖的微笑】错误在所难免,希望得到大家的指正^-^
转载时保留原文的链接http://oursharingclub.joinbbs.net和http://blog.csdn.net/mirrorsbeyourself
1 0
- 【扩展知识7】谈const有关的那些事
- const的那些事
- 知识扩展----404错误页面那些事
- 有关const的一些事
- C++ const的那些事
- 有关接口的那些事
- 有关HealthKit的那些事
- 有关HealthKit的那些事
- 有关http的那些事
- 有关const的点点滴滴
- 指针和const的那些事
- 指针和const的那些事
- const和指针的那些事
- C++的那些事:const用法面面观
- C指针与const的那些事
- const与指针的那些事
- 有关CPU与内存的那些事
- 与数据开放有关的那些事
- [UI]关于代码手写UI,xib和StoryBoard
- 第十三周项目1-3(输出数组中元素值为3的倍数的数)
- Visual Basic 编译真正的动态连接库文件
- less学习变量的定义(1)
- 第十三周项目一——数组大折腾(4)
- 【扩展知识7】谈const有关的那些事
- Disruptor 无锁同步框架入门
- HDU1720(输入输出涨姿势)
- less 学习 混合(2)
- Linux2.6设备驱动常用的接口函数
- 【牛刀小试5】打印三角
- 排序算法(五)2-路插入排序
- SQLServer 常用sql2
- 学习Opencv2.4.9(三)---图像的基本运算