c语言——指针(1)

指针是内存中变量地址的编号,指针变量用于存储这些地址。指针的大小在不同平台可能不同,但总是固定的。指针类型决定了解引用时访问的字节数,如char*和int*。野指针是未初始化、越界或指向已释放空间的指针,应通过初始化、避免指针越界和及时置NULL来避免。
摘要由CSDN通过智能技术生成

大家好我是小锋今天给大家带来的是指针的讲解

指针是什么?

指针理解的 2 个要点:
1. 指针是内存中一个最小单元的编号,也就是地址
2. 平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量

指针就是地址,口语中说的指针通常指的是指针变量

指针变量
我们可以通过 & (取地址操作符)取出变量的内存其实就是地址,把地址可以存放到一个变量中,这个变量就是指针变量。

那指针变量的空间有多大?

我们可以通过代码验证

 验证后我们发现指针的大小都是四个字节。

指针的大小在32位平台是4个字节,在64位平台是8个字节

既然如此,每一个指针的大小都是固定的,那是不是就没有必要用到指针类型呢?

让我们继续往下讲解

 指针和指针类型

我们知道指针的类型是指向对象的类型

char* 类型的指针是为了存放 char 类型变量的地址。

short* 类型的指针是为了存放 short 类型变量的地址。

int* 类型的指针是为了存放 int 类型变量的地址。

大家想想,这么做的意义是什么?

大家仔细看看以下代码

当指针类型与它所指向的对象类型不一致时用*找到a并改变它的数据时,只改变了一部分这一部分就是指针类型的类型空间大小。(比如: char* 的指针解引用就只能访问一个字节,而 int* 的指针的解引用就能访问四个字节。

所以从这里我们可以理解指针类型就像是一种权限(指针的类型决定了指针向前或者向后走一步有多少字节)

野指针

概念: 野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)

  野指针成因
1,指针未初始化

 2,指针越界访问

 3,指针指向的空间释放

这里会在动态内存管理时讲解

 如何规避野指针

1. 指针初始化

2. 小心指针越界

3. 指针指向空间释放即使置NULL

4. 避免返回局部变量的地址

5. 指针使用之前检查有效性

 以上就是全部内容了,如果有错误或者不足的地方欢迎大家给予建议。 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值