欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    c语言中const的用法.docx

    • 资源ID:17692485       资源大小:16.94KB        全文页数:9页
    • 资源格式: DOCX        下载积分:8.88金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要8.88金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    c语言中const的用法.docx

    c语言中const的用法C语言作为一门新型高级编程语言,在计算机软件编程中具有较为广泛的应用和实现。下面我就跟你们具体介绍下c语言中const的用法,希望对你们有用。c语言中const的用法如下:const的基本解释const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上能够提高程序的强健性,另外,在观看别人代码的时候,明晰理解const所起的作用,对理解对方的程序也有一些帮助。固然这听起来很简单,但实际上,const的使用也是c语言中一个比拟微妙的地方,微妙在何处呢?请看下面几个问题。问题:const变量常量为什么我象下面的例子一样用一个const变量来初始化数组,ANSIC的编译器会报告一个错误呢?constintn=5;intan;答案与分析:1、这个问题讨论的是常量与只读变量的区别。常量肯定是只读的,例如5,abc,等,肯定是只读的,由于程序中根本没有地方存放它的值,当然也就不能够去修改它。而只读变量则是在内存中开拓一个地方来存放它的值,只不过这个值由编译器限定不允许被修改。C语言关键字const就是用来限定一个变量不允许被改变的修饰符Qualifier。上述代码中变量n被修饰为只读变量,可惜再怎么修饰也不是常量。而ANSIC规定数组定义时维度必须是常量,只读变量也是不能够的。2)、注意:在ANSIC中,这种写法是错误的,由于数组的大小应该是个常量,而constintn,n只是一个变量常量!=不可变的变量,但在标准C+中,这样定义的是一个常量,这种写法是对的,实际上,根据编译经过及内存分配来看,这种用法本来就应该是合理的,只是ANSIC对数组的规定限制了它。3)、那么,在ANSIC语言中用什么来定义常量呢?答案是enum类型和#define宏,这两个都能够用来定义常量。问题:const变量const限定的内容下面的代码编译器会报一个错误,请问,哪一个语句是错误的呢?typedefchar*pStr;charstring4=abcconstchar*p1=string;constpStrp2=string;p1+;p2+;答案与分析:问题出在p2+上。1)、const使用的基本形式:constcharm;限定m不可变。2)、替换1式中的m,constchar*pm;限定*pm不可变,当然pm是可变的,因而问题中p1+是对的。3)、替换1式char,constnewTypem;限定m不可变,问题中的charptr就是一种新类型,因而问题中p2不可变,p2+是错误的。问题:const变量字符串常量请问下面的代码有什么问题?char*p=imhungry!p0=I答案与分析:上面的代码可能会造成内存的非法写操作。分析如下,imhungry本质上是字符串常量,而常量往往被编译器放在只读的内存区,不可写。p初始指向这个只读的内存区,而p0=I则企图去写这个地方,编译器当然不会答应。问题:const变量字符串常量2请问chara3=abc合法吗?使用它有什么隐患?答案与分析:在标准C中这是合法的,但是它的生存环境非常狭小;它定义一个大小为3的数组,初始化为abc。注意,它没有通常的字符串终止符0,因而这个数组只是看起来像C语言中的字符串,本质上却不是,因而所有对字符串进行处理的函数,比方strcpy、printf等,都不能够被使用在这个假字符串上。问题5:const指针类型声明中const用来修饰一个常量,有如下两种写法,那么,请问,下面分别用const限定不可变的内容是什么?1)、const在前面constintnValue;/nValue是constconstchar*pContent;/*pContent是const,pContent可变const(char*)pContent;/pContent是const,*pContent可变char*constpContent;/pContent是const,*pContent可变constchar*constpContent;/pContent和*pContent都是const2)、const在后面,与上面的声明对等intconstnValue;/nValue是constcharconst*pContent;/*pContent是const,pContent可变 (char*)constpContent;/pContent是const,*pContent可变char*constpContent;/pContent是const,*pContent可变charconst*constpContent;/pContent和*pContent都是const答案与分析:const和指针一起使用是C语言中一个很常见的困惑之处,在实际开发中,十分是在看别人代码的时候,经常会由于这样而不好判定作者的意图,下面讲一下我的判定原则:沿着*号划一条线,假如const位于*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;假如const位于*的右侧,const就是修饰指针本身,即指针本身是常量。你能够根据这个规则来看上面声明的实际意义,相信定会一目了然。另外,需要注意:对于const(char*);由于char*是一个整体,相当于一个类型(如char),因而,这是限定指针是const。另const用于函数时出现三个位置:例如:constreturnValfunction(constlist_array)const;第一个const意思是:返回值是常量第二个const意思是:函数经过中不能修改list_array的值第三个const意思是:函数经过不能隐式的修改function参数的值zzpublishblog.blogchina/blog/tb.b?diaryID=3217823constchar*,charconst*,char*const的区别问题几乎是C+面试中每次都会有的题目。Bjarne在他的TheC+ProgrammingLanguage里面给出过一个助记的方法:把一个声明从右向左读。char*constcp;(*读成pointerto):cpisaconstpointertocharconstchar*p;:pisapointertoconstchar;charconst*p;同上由于C+里面没有const*的运算符,所以const只能属于前面的类型。另:下面定义的一个指向字符串的常量指针:char*constprt1=stringprt1;其中,ptr1是一个常量指针。因而,下面赋值是非法的。ptr1=stringprt2;而下面的赋值是合法的:*ptr1=m由于指针ptr1所指向的变量是能够更新的,不可更新的是常量指针ptr1所指的方向(别的字符串)。下面定义了一个指向字符串常量的指针:const*ptr2=stringprt1;其中,ptr2是一个指向字符串常量的指针。ptr2所指向的字符串不能更新的,而ptr2是能够更新的。因而,*ptr2=x是非法的,而:ptr2=stringptr2;是合法的。所以,在使用const修饰指针时,应该注意const的位置。定义一个指向字符串的指针常量和定义一个指向字符串常量的指针时,const修饰符的位置不同,前者const放在*和指针名之间,后者const放在类型讲明符前。

    注意事项

    本文(c语言中const的用法.docx)为本站会员(安***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开