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` 里的 `&`,你看它就顺眼了------那就是在告诉电脑:"嘿,把这个数塞进这个房号里去。"

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

相关推荐
Rabitebla6 小时前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
Gary移动存储固件7 小时前
eMMC5.1协议中文学习讲解(6.6.17~6.6.22.4.6)
学习·ufs·emmc·nand·存储固件
一个天蝎座 白勺 程序猿8 小时前
别让收藏夹替你学习:我搭AI知识体系的完整方法,脚本直接拿去用
人工智能·学习·ai·ai学习
楚山之石8 小时前
【Nat Biomed Eng】Connectome 2.0 超高梯度扫描仪:500 mT/m 与 600 T/m/s 把活体人脑微观结构分辨推进到亚微米级
图像处理·学习·数据分析·mri
坤坤子吖11 小时前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
another heaven12 小时前
【C/C++ Ranges 是零开销抽象吗?拆开管道、惰性求值和编译期膨胀】
c语言·开发语言·c++
Code_Solitude12 小时前
C语言动态内存 + 柔性数组 + 数组名退化
c语言·算法·柔性数组
LGL6030A15 小时前
Java学习历程31——初识Spring Boot
java·spring boot·学习
Zwawa16 小时前
让屏幕动起来:OLED动画效果,丝滑光标、帧动画和一只贪吃蛇
c语言·单片机·嵌入式
阿达和自己16 小时前
springboot学习-springboot引入MyBatis-Plus
spring boot·学习·mybatis