首页编程语言单片机C语言编程猫怎么样

单片机C语言编程猫怎么样

cysgjjcysgjj时间2024-07-20 09:05:57分类编程语言浏览18
导读:怎样熟练掌握C语言的指针?怎样熟练掌握C语言的指针?谢谢邀请,从事C语言开发已经超过10个年头,越来越觉得指针的方便之处,但在初学者来看指针就是拿下这门编程最大的拦路虎,毕竟很多人开始学习C语言都是激情四射结果遇上了指针猫变成了老鼠变得畏首畏尾。对于指针的不理解主要还是意识上缺乏计算机思维,思维的锻炼不是靠一两天的勤奋能够到位的,需要……...
  1. 怎样熟练掌握C语言的指针?

怎样熟练掌握C语言指针

谢谢邀请,

从事C语言开发已经超过10个年头,越来越觉得指针的方便之处,但在初学者来看指针就是拿下这门编程最大的拦路虎,毕竟很多开始学习C语言都是***四射结果遇上了指针猫变成了老鼠变得畏首畏尾。对于指针的不理解主要还是意识上缺乏计算机思维,思维的锻炼不是靠一两天的勤奋能够到位的,需要时间的坚持。

要理解指针还是需要掌握一些基础计算机组成原理,了解计算机内部结构以及内存管理,明白进制之间如何转化,然后再去看如何使用指针,指针本质就是一个变量地址,指针使用起来有很多规则,而且一般人都经常容易忘记,有个编程高手同事,编程的基本功特别扎实,问他怎么练成的他说刚入行的时候遇到一个特别负责技术主管,主要下属犯一些技术错误直接在办公室通报批评,每次操作字符串或者指针出现问题就通报,在指针的初始化方面特别容易出问题,所以现在这种错误几乎不会再出,这也是普通初学者经常出的一些问题,指针还没初始化拿去用直接就导致系统崩溃了,来回折腾几次就开始怕了指针了,所以很多人开始学习指针不见得就是怕指针,就是弄了几次错误之后就觉得这玩意不好惹。

单片机C语言编程猫怎么样
图片来源网络,侵删)

可能觉得指针的初始化很简单的事情,但在实际操作过程中几乎每个人都会遇到,特别是结构体指针如果结构体里面再有指针,数组,结构体等等复杂的数据结构,这样在函数操作过程中什么时候什么时候释放指针,如何进行指针之间赋值等等操作就能看到功底了,所以初学者开始做项目经常写出导致系统崩溃或者内存泄漏的代码,这些经验都需要慢慢来总结,当然最重要的时候不能被吓到坚持下去。

学习指针推荐一本林锐博士写的《高质量C/C++编程》对于指针的常见的漏洞有一些非常透彻的讲述,想快速掌握指针的使用技巧还是要以实际项目为基础,记得曾经做一个机顶盒项目遇到一个问题在耐久测试过程中,只要是运行超过48小时很快就死机,从经验上判断是内存泄漏但要找到那个内存申请导致,最后用了钩子函数不停的折腾,找到了动态申请内存的一行代码,不停的在申请但一直没有释放,做了释放的动作了,但指针的释放方向不同,因为这个事情项目晚了三天发布,由于经历过这些过程所以在写代码的时候就会让自己小心。

1.首先要正确认识指针,不能因为指针给自己带给来过麻烦就不敢去使用了,去年写了一个项目,由于下边的技术人员大部分都是刚入行的,所以在设计框架的时候刻意减少了指针的使用,大部分使用的数组来代替,在项目结束的时候,专门布置了个任务,把里面的数组全部换成指针来操作,结果大家苦不堪言,真正的意识到指针不是那么好玩,但大家都坚持下去,经过一段时间大家基本上都掌握的差不多了,所以从心里上就要做到越挫越勇。

单片机C语言编程猫怎么样
(图片来源网络,侵删)

了解微机或单片机硬件基础原理,特别是内存存储的原理,有助于理解c语言的指针。最重要的一点就是明白指针就是存储单元地址,指针和地址可以划等号。我觉得指针的名字取的不太科学,让人不好理解,只要理解了地址就是指针,c的指针就不难理解了。

不需要太多言语,我们来一个简单的比喻,马上掌握指针!

指针指向一个地址,好比张三家住在北京XX街道,那么访问门牌号是北京XX街道,里面住的人就是张三。在程序中地址一般都是0x22223333这样的十六进制数,是唯一的!我们就可以理解为是门牌号。0x22223333里面的值比如是整数50,我们可以理解为是张三。

单片机C语言编程猫怎么样
(图片来源网络,侵删)

接下来说明两种情况:

1.指针指向了门牌号:北京XX街道,那指针的值就是这个家里住的人。如果把指针指到另一个门牌号天津XX街道,那指的地方就是不同的房子了,不同的房子里住的当然是不同的人,比如天津XX街道住着李四。这种情况可以说指针指向的地址变了,导致指针的值也变了。

2.如果指针指在门牌:北京XX街道,但是这家里本来住着张三,结果张三搬走了,王五住了进来,这房子里现在住的人是王五了!这种情况我们可以理解为指针指向的地址没变,但是值被改变了。

指针就是这么简单,希望能帮到你哦!

关于C语言的知识,我的文章中有很多干货,初学者可以很快掌握,可以来看看哦。

菜农认为学习C语言的指针非常简单,指针乃地址也!

C语言的指针可以归结为两类,其一为数据指针,其二为函数指针。

前者的类型众多,基本为不同长度的数据数据指针和结构指针之分。

后者的函数指针,实际应用多为函数指针数组。

除了C/C++外,其他编程语言极少有指针,大多的编程语言都取缔了指针,如同反对goto语句一般。

而在嵌入式领域编程时,指针几乎是必备的,例如中断向量即为函数指针数组。

由函数指针和函数别名构成的结构体,就是“COM接口技术”之核心

所以[_a***_]甚至以后很长时间里,在嵌入式领域里,最多的编译器就是C/C++编译器,其他编程语言无法撼动C/C++在嵌入式领域的地位。

指针这个概念就不应该存在,非常容易误导新手。编程多了,压根就不会考虑什么指针不指针了。

指针就是一个地址。

比如。int a=1;这里a就是一个具体的数值。

int* a=1,这里a就是一个地址,***如这个地址是0x88888888,1这个数值就躲在那里,你要跑到这个地址去,才能找到这个1。这时a=0x88888888,*a=1。*a就是去取a的值。

再比如int** a=1,那么a是一个地址,*a也是一个地址,**a才是具体的值。打个浅显的比方,你要去找你的朋友**a,你先跑他家里去a,发现他搬家了,但是他留了一个纸条,纸条上面告诉了新的地址*a,这时再根据新的地址*a,就找到你朋友**a了。

***如有一个结构体:struct S{int a;int b;}。

如果定义S s;s表示的是整个结构体。如果要取s里面a的值,那就是s.a, s.b。

如果定义S* s;这时要获取a的值,就要用s->a.

你就->这个符号,就能明白是跑到s这个地方去。

[免责声明]本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系邮箱:83115484@qq.com,我们会予以删除相关文章,保证您的权利。转载请注明出处:http://www.wnpsw.com/post/16473.html

指针就是地址
小学生机器人语言编程 杭州科技创新大赛