c++ primer 第4章 数组和指针

  1. 避免使用未初始化的指针
  2. 对指针进行初始化或赋值只能使用以下四种类型的值: 
  •  0值常量表达式,例如,在编译时可获得0值的整型const对象或字面值常量0.
  • 类型匹配的对象的地址。
  • 另一对象末的下一地址。
  • 同类型的另一个有效指针。                               

把int型变量赋给指针是非法的,尽管int型变量的值可能为0.但允许把数值0或在编译时可获得0值的const量赋给指针。

      3.void*指针

c++提供了一种特殊的指针类型void*,它可以保存任何类型对象的地址

void*表明该指针与一地址值相关,但不清楚存储在此地址上的对象的类型。

void*指针只支持几种有限的操作:

  •    与另一个指针进行比较;
  • 向函数传递void*指针或从函数返回void*指针;
  • 给另一个void*指针赋值;
  • 不允许使用void*指针操纵它所指向的对象。

4.2.5 指针和const限定符

    1.指向const对象的指针

如果指针指向const对象,则不允许用指针来改变其所指的const值。为了保证这个特性,c++语言强制要求指向const对象的指针也必须具有const特性:

 cptr是一个指向double类型const对象的指针,const限定了cptr指针所指向的对象类型,而并非cptr本身。也就是说cptr本身并不是const。在定义时,不需要对它进行初始化,如果需要的话,允许给cptr重新赋值,使其指向另一个对象。但是不能通过cptr修改其所指对象的值:


  • 把一个const对象的地址赋给一个普通的、非const对象的指针也会导致编译时的错误:
  • 不能使用void*指针保存const对象的地址,而必须使用const  void*类型的指针保存const对象的地址:
  • 允许把非const对象的地址赋给指向const对象的指针:
注意:不能使用指向const对象的指针修改基础对象,然而如果该指针指向的是一个非const对象,可以用其他方法修改其所指的对象。



.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值