C++考试——指针

概念:

指针提供了一种较为直观的地址操作的手段,正确的地使用指针,可以方便、灵活而有效地组织和表示复杂的数据。

地址与指针:

地址:当定义一个变量后,内存中将会划出一块由若干个存储单元组成的区域,用于保存该变量的数据。举一个简单的例子:把一栋楼比作是一个变量,那么地址就是每一家的门牌号。

指针:是一种用于存放内存单元地址的变量类型。例子:居委会中有附近居民的全部信息(门牌号),就可以把居委会看作是一个指针。

指针变量:

定义指针变量的格式:数据类型 * 变量名;     例:

<span style="font-size:18px;">int * ip;    //定义了一个int型的指针变量IP</span>
指针常量:

指针常量:如果在定义指针时,指针前用const修饰,被定义的指针就变成了一个指针类型的常量。相对于指针变量而言,也就是指针值不能被修改的指针。即上述例子中的居委会内的资料不能改变,但是每户里面住的人可以改变。类型如下:

       数据类型 * const 指针名 =变量名;
       1.修饰符const与指针变量紧邻,说明指针的值不允许修改,所以一定要在定义时给出初值。如 
      int * const p = &a;
       2.因为const修饰的是指针,而不是指针指向的对象的值,所以指针指向的对象的值可以被修改。如

      *  p =4
常量指针:

常量指针:如果在定义指针变量的时,数据类型前用const修饰,被定义的指针变量就是指向常量的指针变量,指向常量的指针变量简称常量指针。即上述例子中的居委会的资料可以改变,但是每一户里面居住的人不能改变。类型如下:

      const 数据类型 * 指针变量 = 变量名;
或
      数据类型 const * 指针变量 =变量名;
       1.定义一个常量指针后,指针指向的对象的值不能被修改,即不能通过指针来更改所指向的对象的值,但指针本身可以改变,指向另外的对象。

       2.因为const修饰的是指针指向的值,而不是指针,所以指针指向的值不能被更改。

       3.为了防止通过一个非常量指针修改常量指针指向的值,将一个常量指针赋给一个非常量指针时错误的

       4.可以将一个非常量指针赋给一个常量指针

       5.const用在数组的类型前修饰数组元素,数组元素为常量的数组的称为常量数组,常量数组的元素不可改变,也不可将地址赋值给非常量指针。

指向常量的指针常量:
指针常量保护指针的值不被修改,常量指针保护指针指向的值不被修改,为了将两者同时保护,可以定义指向常量的指针常量,简称为常指针常量。如上述例子中的住户和居委会的信息都不能改变。类型如下:

    const 数据类型 * const 指针变量=变量名;

或

    数据类型 const * const 指针变量 = 变量名;
       1.左边的const与数据类型相结合,表明数据的值是常量;右边的const用在变量前,表明变量的值是常量。

       2.定义一个常指针常量后,修改指针的值与修改指针指向内容的值都是错误的。


注意:
常指针类型通常用作函数的形参,以防止在函数体内通过形参修改实参指向的值,以保护实参。


总结:

指针时C++语言最重要的特性之一,也是C++的主要难点,从某种程度上而言,如果不能深刻地理解指针的概念,正确而有效地掌握指针,就不可能真正学好C++。所以,对我而言,指针这一块还需要更进一步的学习……


评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值