C语言教程07指针

Posted ITbear

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言教程07指针相关的知识,希望对你有一定的参考价值。

点击关注我哦

【C语言教程07】指针

嗨喽!大家好,很长一段时间没有更新了,其实最近一段时间都在学习前端的相关知识,所以指针篇的学习也鸽了很久。

说到这里的话我就顺便和大家分享一下最近的心得体会。其实总结成四个字就是边学边练,这也是我一直以来强调的自学方式。很明显的一点,尤其是在前端网页开发的时候,知识点都是很容易理解却又繁多的,比如说html的标签这么多,我们不可能死记硬背,所以只能让自己多练习多使用,不会的再去查,说到底就是个熟能生巧的过程。

大家应该都知道,外界的培训学校,培训一段时间后就可以参加工作任务,其实也不过是实践得多些。但也有个问题,那就是培训学到的是实战经验,不一定能学到底层原理,就像是学习一门生存手艺一样,这也是培训完就能直接工作的原因,目的不同,学习方向不同,而大家目前阶段就是在学习基础知识,如果再加上一些实战项目,就能达到高效的学习,不管是实战经验还是底层知识都能快速提升,这都取决于大家自身的学习方式。

废话就到这,接下来我们就来会一会今天的主角——指针。这也应该是大家学习C语言最头疼的一个部分了。


【C语言教程07】指针


那么,什么是指针呢?

我们知道,编程的过程中计算机会为变量分配一定的内存,而我们操作变量其实就是在修改内存中的信息,而有时候我们也会遇到一个问题,我们如何去找到这个存储变量的内存呢?

我们依旧用酒店打比方。有这样一个3楼的酒店,每一楼4个房间,我们知道每一个房间编号,现在大家是不是一眼就能看出房间所在的位置。

【C语言教程07】指针

那我如果不用数字编号大家还能看出来吗?之所以能看出来无非就是因为酒店房间的编号与位置是有关联的。而指针就是这样一个功能。在我们不知道位置的情况下帮我们记录位置。

就像前台一张海报上写着每一个房间的具体位置。

【C语言教程07】指针

如:int *arr[5];

区别于它的是数组指针,指的是一个数组类型的指针,指针指向一个数组,

如: int (*arr)[5];

既然是变量,我们就用之前学习变量的方式来学习指针。


【C语言教程07】指针
指针的声明和定义

和变量一样,指针类型的变量也是需要声明定义的,且必须在你使用该指针之前定义好。定义的方法类似,只是比普通变量多一个“*”符号。

类型 *变量名; ,如:

【C语言教程07】指针

Int *p; 

这样我们就定义了一个名为p 的整型指针,其他类似。


【C语言教程07】指针
指针的初始化
【C语言教程07】指针 【C语言教程07】指针 【C语言教程07】指针 【C语言教程07】指针

【C语言教程07】指针【C语言教程07】指针



【C语言教程07】指针
指针类型的传参方式
【C语言教程07】指针 【C语言教程07】指针


【C语言教程07】指针
指针与数组

我们先看代码:

【C语言教程07】指针

下面看运行结果:

【C语言教程07】指针

在指针P加2后我们发现其指向的变量的内容与数组里arr[2]的值相同,于是我们大胆推测,这个指针就是数组本身,其实也确实如此。

指针P 进行加操作实际上是以它指向的数据类型的内存大小为单位,也就是说我们加2后就是往后延伸了两个int类型的大小,而arr数组就是一组连续的int类型内存。

【C语言教程07】指针 【C语言教程07】指针

实际上我们使用指针作为数组能够比数组更加灵活,并且效率更高,但另一方面,用指针实现的难度会比数组本身难。

如果大家学过数据结构中的链表的话就会更有体会,链表的强大与便捷令人难以割舍,静态链表可以用数组实现,而动态链表的实现通过指针实现,其难度也令人头疼。


【C语言教程07】指针
指针的指针

下面我会用代码和运行结果演示,结果相对较为复杂,希望大家能够理清结果。

【C语言教程07】指针 【C语言教程07】指针

如果大家理清了上述代码,其实就会发现指针的指针不论多么复杂,只要一层一层剥离开就会得出结果,接下来我带着大家一起理一遍。

当(*p_p_num)的值就等于p_num的值后,(**p_p_num)的值就等于(*p_num)的值,即num的值5。到此结束。

为了方便大家理解,特意用下面这个模型再演示一遍。

【C语言教程07】指针
【C语言教程07】指针

好了,指针的全部内容基本上都在这里了,当然了,有指针的指针那就会有指针的指针的指针。

反正不管如何,只要掌握了上述的方法,相信以大家的聪明才智都是能够解决的,还有一点没提的是结构体指针,而结构体是我们下一篇要学习内容,所以在这里就不展开讲了,等大家学会结构体后,结合这一篇的指针内容,结构体指针自然也就掌握了。

在C语言中指针确实是最难的一部分之一,所以需要大家好好去理解和消化,还是那么一句话,大家可以先自行解决,若有问题欢迎随时来询问,后台留言或者微信等方式联系我都是可以的,那么我们下一篇结构体再见!


RECOMMEND



【C语言教程07】指针
【C语言教程07】指针
【C语言教程07】指针
扫码关注我
更多内容等待你的发现



以上是关于C语言教程07指针的主要内容,如果未能解决你的问题,请参考以下文章

这是我看过最全面讲解嵌入式C语言回调函数和函数指针的教程

这是我看过最全面讲解嵌入式C语言回调函数和函数指针的教程

史上最强C语言教程----指针(笔试题1)

C++入门基础教程:C语言的指针与结构体到底怎么用?

C++入门基础教程:C语言的指针与结构体到底怎么用?

Swift3.0语言教程使用指针创建和初始化字符串