原来指针可以这么来理解,妈妈再也不用担心我的编程了
2015-09-20 18:01
405 查看
初学编程,通常会遇到一个拦路虎——“指针”。不论教材,还是老师的讲解,基本都是照本宣科,一点不生动。(这也是教材的一个通病,太严肃,不能说的太多,要不然会被和谐的O(∩_∩)O)
本人在此希望通过一系列文章,能将“指针”这一概念讲述清楚,使初学者能从中收益。
在学习一个新东西之前,最好通过我们一个熟悉的生活例子来引导,这样我们就好理解了。(有门路的同学可以把这条意见反馈到我们的教育部门)
先看一个熟悉的例子:
小新和妈妈逛完超市,为了考考小新的记忆力,让小新去找车停在哪里?那么小新怎样能快速的找到车子停放的位置呢?
![](https://oscdn.geek-share.com/Uploads/Images/Content/201509/656a11e3d83c43298189493fd64d79cc)
上图是一个停车场,停好车后,会给你一个停车牌,上面纪录停车位的数字(也就是地址),这样当你取车的时候,按照停车牌上的地址,就能快速的找到汽车了。
所以,停车牌是去指引的作用的,下面本篇文章的主人公就要登场了——“指针”。
“指针”就是停车牌,“指针”就是停车牌,“指针”就是停车牌,重要的事情我说三遍!
在程序里,没有汽车,没有车位。那么分别对应着什么呢?
汽车——>变量(汽车有长短,所以变量也是有长短的哦,这就是为什么整型、字符长短不一样,原来是公交车和小汽车的区别,新技能,get!)
停车场——>内存(哦,内存原来是一个存放的空间,可以存变量)
车位——>字节
停车牌——>指针
好,接下来我们来做一道语文题,用上述词语替换原文进行变换。
原文:有一个停车场,分成很多车位,每个车位有不同的地址,汽车按不同车位停放。做一个停车牌纪录汽车停放的地址,用于快速找到汽车。
替换:(别告诉你不会,找那个教你语文的体育老师去)有一片内存,分成很多字节,每个字节有不同的地址,变量按字节存放在内存里。定义一个指针,纪录变量的存放地址,用于快速找到该变量。
好了,我的课程完了,下课~
等等,你还没懂?笔者已经哭晕在卫生间,没办法,笔者只有亮出杀手锏了——上“视频”
好了,这下各位应该满意了吧。我们再来看一段代码,是不是清晰多了?
intmain()
{
short a = 3, b= 4; (两辆货车a, b)
float x = 1.5; (一辆公交车x)
short *p; (停车牌)
p = &a; (把货车a的存放地址写到停车牌上)
printf("%d, %d\n", p, *p); (分别打印停车牌上的值和停车牌地址上提放的汽车)
return 0;
}
所以最后运行结果是1638212, 3.
疗效就是这么显著O(∩_∩)O~,要了解更多IT知识,请关注微信公众号“实战帮”,每期一个知识点,妈妈再也不用担心我的IT了。
本人在此希望通过一系列文章,能将“指针”这一概念讲述清楚,使初学者能从中收益。
在学习一个新东西之前,最好通过我们一个熟悉的生活例子来引导,这样我们就好理解了。(有门路的同学可以把这条意见反馈到我们的教育部门)
先看一个熟悉的例子:
小新和妈妈逛完超市,为了考考小新的记忆力,让小新去找车停在哪里?那么小新怎样能快速的找到车子停放的位置呢?
上图是一个停车场,停好车后,会给你一个停车牌,上面纪录停车位的数字(也就是地址),这样当你取车的时候,按照停车牌上的地址,就能快速的找到汽车了。
所以,停车牌是去指引的作用的,下面本篇文章的主人公就要登场了——“指针”。
“指针”就是停车牌,“指针”就是停车牌,“指针”就是停车牌,重要的事情我说三遍!
在程序里,没有汽车,没有车位。那么分别对应着什么呢?
汽车——>变量(汽车有长短,所以变量也是有长短的哦,这就是为什么整型、字符长短不一样,原来是公交车和小汽车的区别,新技能,get!)
停车场——>内存(哦,内存原来是一个存放的空间,可以存变量)
车位——>字节
停车牌——>指针
好,接下来我们来做一道语文题,用上述词语替换原文进行变换。
原文:有一个停车场,分成很多车位,每个车位有不同的地址,汽车按不同车位停放。做一个停车牌纪录汽车停放的地址,用于快速找到汽车。
替换:(别告诉你不会,找那个教你语文的体育老师去)有一片内存,分成很多字节,每个字节有不同的地址,变量按字节存放在内存里。定义一个指针,纪录变量的存放地址,用于快速找到该变量。
好了,我的课程完了,下课~
等等,你还没懂?笔者已经哭晕在卫生间,没办法,笔者只有亮出杀手锏了——上“视频”
好了,这下各位应该满意了吧。我们再来看一段代码,是不是清晰多了?
intmain()
{
short a = 3, b= 4; (两辆货车a, b)
float x = 1.5; (一辆公交车x)
short *p; (停车牌)
p = &a; (把货车a的存放地址写到停车牌上)
printf("%d, %d\n", p, *p); (分别打印停车牌上的值和停车牌地址上提放的汽车)
return 0;
}
所以最后运行结果是1638212, 3.
疗效就是这么显著O(∩_∩)O~,要了解更多IT知识,请关注微信公众号“实战帮”,每期一个知识点,妈妈再也不用担心我的IT了。