空指针、野指针、const、void

本文详细解析了指针及const修饰符的使用方法,包括野指针、空指针的区别,const修饰的指针如何分类及应用场景,以及指向const变量的指针、const指针、指向const变量的const指针的概念与区别。同时介绍了void指针的用途和通用性,为深入理解C/C++语言提供了理论基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

空指针 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型,就可以增加函数的通用性,这有点像抽象的意思,与面向对象息息相关。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值