目录
1.一级指针
2.空指针
3.野指针
4.二级指针
废话:
由于我因为种种原因以及我存在一定的惰性,导致我在编程学习进度上落下一大截,所以我不得已减少写文章的次数,篇数和时间,并且以后基本也只会写一下我认为值得深究或者不好理解的部分。
此外,在此忏悔。
1.一级指针
何为指针?
指针类似于一个书签,通过它,我们就可以在一本书里引用所标记的内容。
如图所示:
在代码中,我们创建了一个指针 p ,并且用该指针指向了int类型的参数a,其中a等于10。由此可知,*p,即指针 p 等于10。
作为一个书签,它在我们的编程文件中也会占用空间,如果我们单独引用‘ p ’这一字母时,它所代表的就是我们创建的指针 p 的地址。
所以,我们也可以用地址来传参,如图中绿字所示。
2.野指针
野指针是一种在编程过程中制造出的错误。
它其实是由于在创建指针时没有进行初始化导致所指向的地址是未知的,从而创造出了野指针。
如果想避免创造野指针可以在创建指针的时候就进行赋值,如图所示:
在创建指针 p 的时候,前面的"int* "是在进行声明变量,声明 p 是一个指针,所以在赋值的时候要进行取地址,取a的地址。
在进行一些操作的时候,也有可能导致原本的指针变为野指针,如图所示:
在该代码中,我们创建的指针 p 指向了由 malloc 开辟的 120 字节(30*4)的空间。
当我们执行完其余代码进行空间释放的时候,我们的指针 p 就变为了野指针。
这时,我们将指针掷空,野指针就变为了空指针。
3.空指针
“p = NULL”,这就是指针掷空操作,经此操作下来的指针就是空指针。
空指针其实也会指向空间,不过这个空间是安全的,这也是与野指针不同的地方——野指针指向的空间未知,而空指针指向安全空间,能够确保不会出错。
4.二级指针
二级指针和多级指针其实就是俄罗斯套娃,但是也要细细理解。
下面我们来创建一个二级指针:
其结果为:
在创建二级指针时,我们要用 int** 进行声明,与一级指针相同,声明二级指针时也要用地址赋值。
由一级指针可知:
*p = a(本身)
p = &a(地址)
由此可以推出:
**pp = a的值
*pp = 指针 p 所指向的a 的地址
pp = 指针 p 的地址
以上就是所有内容。