C语言中Const与指针(转载)
一、说明指针常量、指向常量的指针和指向常量的常量指针的含义、区别和共同点
首先,以上三种概念的共同点:都指的是指针
指针也是一种变量,它存储指定类型的变量的内存地址,如char* 来声明一个字符型指针变量,跟其它变量一样,当其值不可改变时,该指针变量就成为了指针常量,既是常量,它当然一直指向同一个内存地址,而不能被改变。
指向常量的指针顾名思义就是说其指向的那个地址的值不是变量而是常量了,即其指向的内存地址的内容将不能被改变,而指针本身则可以改变。
指向常量的指针常量最好理解,结合以上两者的含义即可知道,其特点就是指针本身的值(即指向的内存地址)和指针指向内存地址的内容均是常量,不能被改变。
二、const的应用举例及说明
//指针常量
char str[5] = "abcd"; //声明一个字符数组
char * const pStr = str; //让pStr指针指向字符数组变量str;pStr该指针常量值(即指向的内存地址)不能被改变。
//分别执行以下语句的结果,可以体现它的特点
pStr = "asdfaf" ; //企图让pStr 指针常量指向另一个地址,结果报错!
*pStr = 'd'; //修改pStr指针常量指向的内存地址中第一个字符的内容为d,结果正确,第一个字符被修改。
//指向常量的指针
char str[5] = "abcd"; //声明一个字符数组
const char * pStr = str; //让pStr指针指向字符数组常量str,该字符数组不能被改变;
//分别执行以下语句的结果,可以体现它的特点
pStr = "asdfaf" ; //让pStr 指针常量指向另一个地址,结果正确,pStr不再指向str字符数组常量,而指向了字符串asdfaf的首地址!
*pStr = 'd'; //修改pStr指针常量指向的内存地址中第一个字符的内容为d,结果错误,常量不能被修改。
//指向常量的指针常量
char str[5] = "abcd"; //声明一个字符数组
const char * const pStr = str; //让pStr指针指向字符数组常量str,该字符数组不能被改变;
//分别执行以下语句的结果,可以体现它的特点
pStr = "asdfaf" ; //让pStr 指针常量指向另一个地址,结果错误,此时是指针值不能被改变!
*pStr = 'd'; //修改pStr指针常量指向的内存地址中第一个字符的内容为d,结果错误,此时是内容不能被改变。
三、const声明的变量必须要进行初始化赋值
如果错过了这个机会,以后就别想再给常量赋值了
const int a = 0 和 int const a = 0的作用相同
const要求所修饰的对象为常量,不可被改变,不可作为左值
C语言中Const与指针(转载)的更多相关文章
- [原创]c语言中const与指针的用法
最近一直在准备笔试,补补大一大二欠下的课.复习c语言时碰见这么个题: 1 2 3 4 5 int a=248, b=4; int const c=21; const int *d=&a; ...
- C/C++语言中const的用法
1. const 在C和C++中的区别 C++中的const正常情况下是看成编译期的常量,编译器并不为const分配空间,只是在编译的时候将期值保存在名字表中,并在适当的时候折合在代码中. 所 ...
- C-C++到底支不支持VLA以及两种语言中const的区别
C-C++到底支不支持VLA以及两种语言中const的区别 到底支不支持VLA VLA就是variable-length array,也就是变长数组. 最近写程序的时候无意间发现,gcc中竟然支持下面 ...
- C语言中const和数组
C语言中const的用法 const:在定义变量时,如果使用关键字const,那就表示限制这个变量值不允许被改变. (1) 修饰变量 const离谁越近,谁的值就不能改变. int const ...
- C语言中file文件指针概念及其操作 (转载)
文件 文件的基本概念 所谓"文件"是指一组相关数据的有序集合. 这个数据集有一个名称,叫做文件名.实际上在前面的各章中我们已经多次使用了文件,例如源程序文件.目标文件.可执行文件. ...
- C语言中const关键字的用法
关键字const用来定义常量,如果一个变量被const修饰,那么它的值就不能再被改变,我想一定有人有这样的疑问,C语言中不是有#define吗,干嘛还要用const呢,我想事物的存在一定有它自己的道理 ...
- C语言中const的正确用法
今天看<Linux内核编程>(Claudia Salzberg Podriguez等著)时,文中(p39)有一个错误,就是关于const的用法. 原文中举例说明:const int *x中 ...
- C语言中const的用法总结
const是一个C语言的关键字,它限定一个变量不允许被改变.使用const在一定程度上可以提高程序的安全性和可靠性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程 ...
- C语言中const有什么用途
自己上网查的资料. 可以定义const常量,具有不可变性.例如:const int Max=100; Max++会产生错误; 便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患.例如: v ...
随机推荐
- 下载xcode 6 beta.dmg
太大.无法上传到csdn上,百度网盘下载 http://pan.baidu.com/s/1eQtcV7c
- CSS引入的方式有哪些? link和@import的区别是?转载
CSS引入的方式有哪些? link和@import的区别是? HTML 中引入 CSS 的方式 有 4 种方式可以在 HTML 中引入 CSS.其中有 2 种方式是在 HTML 文件中直接添加 CSS ...
- Register/unregister a dll to GAC
gacutil /i "C:\Test.dll"gacutil /u "Test"
- 更新Windows Azure Web Site中的Orchard版本
官方建议大家使用本地副本来更新 1.首先做个全站备份,这样更新好以后出问题你就很容易回滚 . Web Site 做备份很方便.把网站SCALE设置到STANDARD,然后在BACKUPS页面里面点备份 ...
- UI界面
http://www.uimaker.com/uimakerhtml/uidesign/uisoft/2016/0323/122862.html http://www.uimaker.com/uima ...
- HDU 1222 Wolf and Rabbit(gcd)
HDU 1222 Wolf and Rabbit (最大公约数)解题报告 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...
- 调用 sphinx-build生成HTML文件
安装 Sphinx $ easy_install sphinx Searching for sphinx Reading http://pypi.python.org/simple/sphinx/ R ...
- pip install 出现报asciii码错误的解决
原因是pip安装python包会加载我的用户目录,我的用户目录恰好是中文的,ascii不能编码.解决办法是: python目录 Python27\Lib\site-packages 建一个文件site ...
- 高级UNIX环境编程10 信号
信号是软件中断,提供一种处理异步事件的方法 <signal.h> sigaction()
- Outlook Anywhere 每次要输入密码
客户端加入域Exchange OutlookAnywhere使用NTLM验证 2007 2010: