const指针和指向const指针

const指针和指向const指针

ID:20373832

大小:50.00 KB

页数:8页

时间:2018-10-12

const指针和指向const指针_第1页
const指针和指向const指针_第2页
const指针和指向const指针_第3页
const指针和指向const指针_第4页
const指针和指向const指针_第5页
资源描述:

《const指针和指向const指针》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、const指针和指向const的指针博客分类:·C系列 指向const对象的指针      指向const对象的指针就是一个指针,不能通过它来修改它所指向的对象的值。声明方法:constint*p;       const对象在初始化后是不允许对其值进行修改的,因此,我们不能用一个普通指针指向一个const对象,即下面的赋值会引起编译错误:  constinti=1;  int*p=&i;否则的话,我们就可以利用普通指针来修改一个const对象的值,那么const也就毫无意义了。正确的方法是利用一个指向const对象的指针来获取const对象的地址:    constinti=1;  con

2、stint*p=&i;    charconst*p==constchar*p;这样,利用指向const对象的指针也是不能修改它所指向的const对象的值的。注意:  1.指向const对象的指针本身不是const类型(这也是它与const指针的主要不同点),所以它可以指向另一个const对象  2.指向const对象的指针可以被赋予一个非const对象的地址,但是此时试图通过此指针来修改对象的值的操作是非法的 const指针     const指针就是一个指针,它本身就是const类型,所以将它初始化后不能再改变它的指向,即不能让它指向一个新的对象。声明方法:  int*constp;//

3、指向非const对象的const指针  constint*constp;//指向const对象的const指针使用const指针不可以修改其地址值,但是const指针指向非const对象,就可以利用它修改它所指向的对象的值技巧:    如果指针名前紧邻的关键字为const,那么它就是一个const指针;如果声明指针所指向的对象类型前有const关键字,那么它就是一个指向cosnt对象的指针。补充:    Bjarne在他的TheC++ProgrammingLanguage里面给出过一个助记的方法:把一个声明从右向左读(这可能和我们平常习惯有所不同,需要特别注意)。     char *con

4、stcp;(*读成pointerto)    cpisaconstpointertochar,亦即指针常量,cp值不可改变,但*cp,也就是cp所指对象能够改变。    constchar*p;    pisapointertoconstchar,亦即指向常量的指针,所以p所指的对象不可改变。 补:一、可能的组合:   (1)constchar*p    (2)charconst*p   (3)char*constp   (4)constchar**p   (5)charconst**p   (6)char*const*p   (7)char**constp    当然还有在(5)、(6)、

5、(7)中再插入一个const的若干情况,不过分析了以上7中,其他的就可类推了!二、理解助记法宝:    1。关键看const修饰谁。    2。由于没有const*的运算,若出现const*的形式,则const实际上是修饰前面的。    比如:charconst*p,由于没有const*运算,则const实际上是修饰前面的char,因此charconst*p等价于constchar*p。也就是说上面7种情况中,(1)和(2)等价。同理,(4)和(5)等价。在(6)中,由于没有const*运算,const实际上修饰的是前面的char*,但不能在定义时转换写成const(char*)*p,因为在

6、定义是"()"是表示函数。三、深入理解7种组合   (0)程序 在执行时为其开辟的空间皆在内存(RAM)中,而RAM里的内存单元是可读可写 的;指针只是用来指定或定位要操作的数据的工具,只是用来读写RAM里内存单元的工作指针 。若对指针不加任何限定,程序中一个指针可以指向RAM中的任意位置(除了系统敏感区,如操作系统内核所在区域)并对其指向的内存单元进行读和写操作(由RAM的可读可写属性决定);RAM里内存单元的可读可写属性不会因为对工作指针的限定而变化(见下面的第4点),而所有对指针的各种const限定说白了只是对该指针 的 读写权限 (包括读写位置)进行了限定 。   (1)char*p

7、:p是一个工作指针,可以用来对任意位置 (非系统敏感区域)进行读操作和写操作 ,一次读写一个字节(char占一个字节)。    (2)constchar*p或者charconst*p(因为没有const*p运算,因此const修饰的还是前面的char):可以对任意位置(非系统敏感区域)进行“只读” 操作。(“只读”是相对于char*p来说所限定的内容)   (3)char*constp(const修饰的是p)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。