有一阵没更新了,因为最近比较繁忙,所以更新比较慢,还在慢慢学习
话不多说,开始今天的内容,聊一聊C语言指针。
很多小伙伴可能会被指针这个名字吓到,觉得很难,实际上确实有点难,但是想学就一定能学会。
一、关于指针的理解
指针,在我通俗的理解下就是指向一块儿空间的地址,给你设置的变量找了块儿地方存储数据,进了门,空间里面存放着你的变量值,假设当你设置一个变量值 a 的时候,我们的计算机会找一个地方,生成一个门牌号,开辟一块儿空间,当你写入 int a = 0 的时候,那块儿空间就会放入你的定义的值,画个图给大家理解:
然后再继续聊,那么计算机开辟的空间有多大,它根据什么来确定开辟空间的大小呢?
其实答案很简单,就是我们常用的那些变量类型如下:
int 4个字节
char 1个字节
double 8个字节
float 4个字节
short 2个字节
long 4个字节
......
所以空间大小是由变量类型决定的。
二、指针的基础运用
指针 = &变量
*指针 = 指针
PS:指针也是一种变量类型,一般是4个字节,其具体表现形式如下所示:
int * 4个字节
char * 1个字节
double * 8个字节
float * 4个字节
short * 2个字节
long * 4个字节
......
如果我们想得到你写的变量 a 的地址,那么就需要用到取地址操作符 & ,举个简单的例子:
那么怎么用指针呢,在放个图片供大家理解:
下面这张图说明本质上,指针就相当于是地址:
下图是基本的一个指针访问数据:
三、野指针
1. 对野指针的理解:
对我而言,野指针就像是开辟了一个空间,但是具体在哪开辟,我们是完全不知道的,全靠随机,就不太友好
2.为什么会产生这种现象呢?
- 可能是因为指针没有初始化(没有初始化,指针为随机值)
- 指针越界访问(就像给你一个数组,你访问了不存在数组里地址)
- 指针指向的空间释放(多出现在函数运用,形参实参那里)
我们写代码要注意以上三条问题,避免出错
今天分享就到这里啦,根据情况大家可以下来多找一些资料理解
永远不要停下脚步,慢一点也不要止步不前。