c++中void指针和const指针浅析

1.void指针

  一般来说,只能用指向相同类型的指针给另一个指针赋值,而在不同类型的指针之间进行赋值是错误的。比如:

int a,b;

int *p1 = &a,*p2 = p1;//正确

而,

int a;

int *p1 = &a;

double *p2 = p1;//错误

即,上述语句中的两个指针p1、p2指向的类型不同,除非进行强制类型转换,否则它们之间不能进行相互赋值。

  void指针是一个特例。c++允许使用空类型(void)指针,即不指定指针指向一个固定的类型,其定义格式如下。

void *p;

  它表示指针变量p不指向一个确定的类型数据,它的作用仅仅是用来存放一个地址。void指针可以指向任何类型的c++数据。即,可以用任何类型的指针直接给void指针赋值。不过,如果需要将void指针的值赋给其他类型的指针,则需要进行强制类型转换。比如:

int a;

int *p1 = &a;

void *p2=p1;//int 类型指针赋给void类型

int *p4 = (int *)p2;//强制类型转换

void指针与空指针不是一回事。

空指针:不指向任何对象的指针

2.const指针

  如果在指针定义前加上关键字const,就包含一些特殊含义,而关键字const的放置位置不同表示的意义也不同,主要包括以下几点。

(1)关键字const放在指针类型前,就是声明一个指向常量的指针。此时,在程序中不能通过指针来改变它所指向的值,但是指针本身的值可以改变,即指针可以指向其他数据。

(2)关键字const放在“*”和指针名之间,就是声明一个指针常量(也称常指针)。因此,指针本身的值不可以改变,也即它不能在指向其他数据,但它所指向的数据的值可以改变。

(3)在指针类型前、“*”和指针名之间都加关键字const,则是声明一个指向常量的指针常量,指针本事的值不可以改变,它所指向的数据的值也不可能通过指针改变。

 (引用自 C++编程兵书/亓永刚编著)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值