C语言指针难倒90%人?买房比喻让你瞬间开窍

有个朋友学C语言,学到指针直接崩溃,问我:"这指针到底是啥?为啥我赋值10它报错?"我叹了口气说:你见过谁家的房子,客厅里住着一串门牌号?

先别笑。今天我就用三个段子,把指针给你整明白,保证你看完直接开窍。

段子一:变量就是买房,指针就是中介

你定义 `int a = 10`,相当于你买了间房,房号是系统随机给的(比如101),房间里住着"10"这个人。你只能换人住(改a的值),但不能自己改房号。这就是为什么 `&a` 取出地址后,你没法给它赋新值------你见过谁给房号贴个新号码就往里硬塞人的?

好,中介来了。你定义 `int *p`,等于又买了一间房。但这间房特殊------它不能住人,只能住别的房的房号。比如 `p = &a`,就是让p这间房的客厅里贴着一张纸条,上面写着"101"。这时你查中介手里的纸条,就知道a住在哪。

段子二:指针变量为什么不能存普通数字?

有人非要把10塞进p里:`p = 10`。编译直接报错。为啥?因为p这间房的"装修"只允许放地址,你硬塞个人进去,房子直接炸了。就像你家快递柜只能放收件码,你非要往里扔个榴莲,柜门都关不上。记住了:指针变量存的是地址,不是值。地址是房号,值是住户,俩东西别搞混。

段子三:指向不同类型?中介也得专业

你定义 `int *p1`,然后想 `p1 = &x`(x是float)。编译器又怒了。为啥?因为p1这家中介只接整型房的单子。你把一个实数房的门牌号塞给它,它拿着纸条去推销,结果敲开门发现里面住着3.14,中介当场懵逼。这就像让房产中介去卖猪圈------专业不对口,容易出事故。

你看,指针概念就这么点东西。很多人觉得难,是因为老师上来就讲二级指针、函数指针,直接劝退。其实一开始你就记住三句话:

变量就是房间,地址就是房号,指针变量就是专门存房号的"中介"。

中介只能存地址,不能存人。

中介分专业,整型中介不能掺和浮点型的事。

把这仨段子吃透,再回头看 `scanf` 里的 `&`,你看它就顺眼了------那就是在告诉电脑:"嘿,把这个数塞进这个房号里去。"

指针不难,难的是没人用段子讲。今天你学会了,明天就可以去教别人,顺便说一句:"我这中介费不贵,点个赞就行。"

相关推荐
她说彩礼65万18 小时前
C语言 单引号与双引号
java·服务器·c语言
dtq042418 小时前
数据结构 - 树的概念
c语言·数据结构·学习·算法
山下梅子酒22518 小时前
洛谷-入门-B2075
c语言
inferno18 小时前
SVN学习笔记(一)
笔记·学习·svn
传奇开心果编程18 小时前
【ArkUI提高练中学】第7课:性能调优与稳定性治理
学习·ui·华为·harmonyos
我就是不信18 小时前
C语言排序问题详解:从冒泡到快排的完整指南
c语言·算法·排序算法
艾莉丝努力练剑18 小时前
【QT】系统相关:多线程QThread基础
开发语言·网络·c++·qt·学习·大模型
sunshine22 girl19 小时前
Java学习五 面向对象高级5 内部类4-匿名内部类(重点)
java·学习
奇牙coding19 小时前
Codex C接 配置教程:的 字段从迁移时必须写完整后缀,填旧值或省略 会静默回退默认模型
java·c语言·数据库·ai
妄汐霜19 小时前
SSE,RocketMQ,MQTT不同之处
笔记·学习·rocketmq