空指针、野指针、const、void

野指针是指未初始化的指针

空指针 p=NULL;,不一定是内存首地址,不同编译器处理结果不一样。为了安全性,一般定义指针的初始化为空指针;

使用空指针,编译会报错,使用野指针,有的编译器编译不报错。



指针本质上是一个变量,那么const修饰的指针到底是修饰指针本身还是修饰指针所指向的变量?

一、指向const变量的指针

1、const int *p=NULL;

2、int const *p=NULL;

如果一个变量已被声明为常变量,只能用 指向const变量 的指针指向它,而不能用一般的( 指向非const型变量

指向const变量的指针除了可以指向常变量外,还可以指向普通变量。此时可以通过指针访问该变量,但不能通过指针改变该变量的值,用该指针访问时,该变量具有const变量的特征,本身仍然是普通值可变的变量


指向const变量的指针最常用于函数的形参,目的是在保护形参指针所指向的实参变量,使它在函数的执行过程中不被修改,如字符串处理的库函数。但是在函数的调用时,对应的实参既可以是指向const变量的指针,也可以是指向非const变量的指针,因此尽可能采用指向const变量的指针。与此相同的情况还有常引用。


二、const 指针

int a=3;

int *    const p=&a;

const 直接放在指针变量名字的前面直接修饰指针变量,表示指针变量的值不能改变,称p为常指针变量,简称常指针或const指针,定义const指针的同时必须要初始化。p的指向不能改变,但是p指向的单元没有const修饰,因此可以通过指针p来修改它指向的单元的内容


三、指向const变量的const指针

int a=3;

const int*const p=&a;

指针变量本身不能改变,即指针的指向不能改变;指针指向的单元的内容不能通过指针来改变;


小结:

const 有两个位置,可以形成三种指针:

(1) 只在 * 之前有const 的指针,称为指向 const 变量的指针

(2) 只在 * 之后有const 的指针,称为 const 指针

(3)* 前后都有const 的指针,称为 指向 const 变量的const 指针


void 指针 无类型指针  可以指向任何数据类型的数据

如果将函数的参数和返回值都设置为void型,就可以增加函数的通用性,这有点像抽象的意思,与面向对象息息相关。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值