




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文格式为Word版,下载可任意编辑——C语言的const使用方法C语言的const使用方法
C语言是一个有布局化程序设计、具有变量作用域variablescope以及递归功能的过程式语言。以下是我为大家探寻整理的C语言的const使用方法,梦想能给大家带来扶助!更多精彩内容请实时关注我们我!
const是一个C语言的关键字,它限定一个变量不允许被变更。使用const在确定程度上可以提高程序的安好性和稳当性。
const的使用是c语言中一个对比微妙的地方,请看下面几个问题。
问题:const变量和常量
为什么下面的例子在使用一个const变量来初始化数组,ANSIC的编译器会报告一个错误呢?
constintn=5;
inta[n];
答案与分析:
1这个问题议论的是"常量'与"只读变量'的识别。常量断定是只读的,例如5,"abc',等,断定是只读的,由于常量是被编译器放在内存中的只读区域,当然也就不能够去修改它。而"只读变量'那么是在内存中开发一个地方来存放它的值,只不过这个值由编译器限定不允许被修改。
C语言关键字const就是用来限定一个变量不允许被变更的修饰符Qualifier。上述代码中变量n被修饰为只读变量,怅然再怎么修饰也不是常量。而ANSIC规定数组定义时长度务必是"常量',"只读变量'也是不成以的。
2留神:在ANSIC中,这种写法是错误的,由于数组的大小理应是个常量,而constintn,n只是一个变量常量!=不成变的变量,但在标准C++中,这样定义的是一个常量,这种写法是对的,实际上,根据编译过程及内存调配来看,这种用法本来就理应是合理的,只是ANSIC对数组的规定限制了它。
3那么,在ANSIC语言中用什么来定义常量呢?答案是enum类型和#define宏,这两个都可以用来定义常量。
问题:const变量和const限定的内容
下面的代码编译器会报一个错误,请问,哪一个语句是错误的呢?
typedefchar*pStr;
charstring[4]=abc;
constchar*p1=string;
constpStrp2=string;
p1++;
p2++;
答案与分析:
问题出在p2++上。
1const使用的根本形式:constcharm;
限定m不成变。
2替换1式中的m,constchar*pm;
限定*pm不成变,当然pm是可变的,因此问题中p1++是对的。
3替换1式char,constnewTypem;
限定m不成变,问题中的charptr就是一种新类型,因此问题中p2不成变,p2++是错误的。
问题:const变量和字符串常量
请问下面的.代码有什么问题?
char*p=imhungry!;
p[0]=I;
答案与分析:
上面的代码可能会造成内存的非法写操作。分析如下,"imhungry'实质上是字符串常量,而常量往往被编译器放在只读的内存区,不成写。p初始指向这个只读的内存区,而p[0]=I那么企图去写这个地方,编译器当然不会允许。
问题:const变量和字符串常量2
请问chara[3]=abc合法吗?使用它有什么隐患?
答案与分析:
在标准C中这是合法的,但是它的生存环境分外狭小;它定义一个大小为3的数组,初始化为"abc',但它没有通常的字符串终止符\0,因此这个数组只是看起来像C语言中的字符串,实质上却不是,因此全体对字符串举行处理的函数,譬如strcpy、printf等,都不能够被使用在这个假字符串上。
问题5:const和指针
类型声明中const用来修饰一个常量,有如下两种写法,那么,请问,下面分别用const限定不成变的内容是什么?
1const在前面
constintnValue;//nValue是const
constchar*pContent;//*pContent是const,pContent可变
constchar*pContent;//pContent是const,*pContent可变
char*constpContent;//pContent是const,*pContent可变
constchar*constpContent;//pContent和*pContent都是const
2const在后面,与上面的声明对等
intconstnValue;//nValue是const
charconst*pContent;//*pContent是const,pContent可变
char*constpContent;//pContent是const,*pContent可变
char*constpContent;//pContent是const,*pContent可变
charconst*constpContent;//pContent和*pContent都是const
答案与分析:
const和指针一起使用是C语言中一个很常见的困惑之处,在实际开发中,更加是在看别人代码的时候,往往会由于这样而不好判断的意图,下面介绍一种有效的判断原那么:
A、当有"'的展现时,譬如
constchar*pContent;
此时,char*是一个整体,相当于一个新类型,因此,这时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB65T 3809-2015 不同生理阶段速步马培育技术规程
- DB65T 3793-2015 牛尾静脉采血技术规范
- 中学历年考试题库及答案
- 中文十级语法考试题及答案
- 管理学试题及答案浙大
- 2025年智能穿戴设备用高端电子元器件生产技术创新应用场景报告
- 2025员工个人暂停工作合同
- 2025年幼儿园心理学试卷及答案
- 课件制作教学模板
- 中班字母考试题目及答案
- 高考政治一轮复习:统编版必修1《中国特色社会主义》必背考点提纲填空练习版(含答案)
- 近代中国交通工具变迁史说课材料
- 《中华民族一家亲-同心共筑中国梦》队会课件
- 2025届高考试题原创命题比赛说题稿
- 资产负债管理与精算风险控制
- 小学道法小课题研究活动记录
- (2024年)人才培养计划方案
- 国开Python语言基础形考理论考核1-4答案
- 企业质量与安全培训课件
- 《青霉素过敏试验》课件
- 广东省地质灾害危险性评估实施细则(2023年修订版)
评论
0/150
提交评论