const修饰指针.docx

上传人:b****6 文档编号:13564364 上传时间:2023-06-15 格式:DOCX 页数:4 大小:15.67KB
下载 相关 举报
const修饰指针.docx_第1页
第1页 / 共4页
const修饰指针.docx_第2页
第2页 / 共4页
const修饰指针.docx_第3页
第3页 / 共4页
const修饰指针.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

const修饰指针.docx

《const修饰指针.docx》由会员分享,可在线阅读,更多相关《const修饰指针.docx(4页珍藏版)》请在冰点文库上搜索。

const修饰指针.docx

const修饰指针

先看const常量的情况:

constinta=2;

intconstb=c;//c是已经声明过的整型

两者都可以。

本地的const常量必须在第一次声明时就初始化,用变量或常量初始化都可以,只是初始化一次以后它的值就不能再改变了,此所谓const的含义。

一、const修饰指针

1、定义

常量指针:

是指向常量的指针,即指针指向的是常量,它不能指向变量,它指向的内容不能被修改。

不能通过指针来修改它指向的内容,但是指针自身不是常量,它自身的值可以改变,从而指向另一个常量。

指针常量:

是指指针本身是常量,它指向的地址是不可改变的,但地址里的内容可以通过指针改变,指针常量的定义时必须同时赋初值。

2、使用方法:

常量指针:

const在*之前

指针常量:

const在*之后

3、使用举例:

1)常量指针的使用:

constinta,b;

constint*p(或intconst*p);

p=&a;

p=&b;(正确)

*p=10;(错误的)

而且指向常量的指针有时候也会指向变量,如下:

 

int t,u; 

const int *pa; 

pa =&t; //可行,指向变量t 

pa =&u; //也可行,指向变量u 

2)指针常量的使用

inta,b;

int*constp=&a;

*p=20;(正确)

p=&b;(错误)

3)注意事项

还有一种情况,将const的地址赋给常规指针,这样的操作是不允许的,例如:

   constintage=90;

   int*p=&age;

我们可以这样来分析,如果上面的操作可以,那么我们可以改变指针p指向位置的值,即可以进行类似于下面的更新操作:

   *p=new_value;

这样结果就与之前声明的constintage相矛盾,因为age为int型常量,*p改变了age的值。

二.const修饰类对象/对象指针/对象引用

const修饰类对象表示该对象为常量对象,其中的任何成员都不能被修改。

对于对象指针和对象引用也是一样。

const修饰的对象,该对象的任何非const成员函数都不能被调用,因为任何非const成员函数会有修改成员变量的企图。

例如:

classAAA

{

  voidfunc1();

voidfunc2()const;

}

constAAAaObj;

aObj.func1();×

aObj.func2();正确

 

三.const修饰成员变量

const修饰类的成员函数,表示成员常量,不能被修改,同时它只能在初始化列表中赋值。

 

classA

{

  …

ConstintnValue;//成员常量不能被修改

   …

  A(intx):

nValue(x){};//只能在初始化列表中赋值

}

 

四.const修饰成员函数

const修饰类的成员函数,则该成员函数不能修改类中任何非const成员函数。

一般写在函数的最后来修饰。

 

classA

{

  …

voidfunction()const;//常成员函数,它不改变对象的成员变量.也不能调用类中任何非const成员函数。

}

对于const类对象/指针/引用,只能调用类的const成员函数,因此,const修饰成员函数的最重要作用就是限制对于const对象的使用。

 

注意事项:

1、不能将const类型的对象传递给non-const类型的引用。

        constintcx=100;

        int&rx=cx;            //error

 

  首先,告诉大家一个小规则,就是像这样连着的两个词,前面的一个通常是修饰部分,中心词是后面一个词,怎么说呢,就像这里的常量指针和指针常量。

   常量指针,表述为“常量的指针”,它首先应该是一个指针。

常量指针,就是指向常量的指针,关键字const出现在*左边,表示指针所指向的地址的内容是不可修改的,但指针自身可变。

  指针常量,表述为“指针的常量”,它首先应该是一个常量。

指针常量,指针自身是一个常量,关键字const出现在*右边,表示指针自身不可变,但其指向的地址的内容是可以被修改的。

 还有其中区别方法:

沿着*号划一条线,

如果const位于*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;

如果const位于*的右侧,const就是修饰指针本身,即指针本身是常量。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2