C语言的const使用方法_第1页
C语言的const使用方法_第2页
C语言的const使用方法_第3页
C语言的const使用方法_第4页
C语言的const使用方法_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论