死磕……这两个字实在太形象了。
简单说吧,指针这么简单的、理解了原理就一通百通的问题,为什么要死磕?
指针是什么?
指针就是地址,就是你的电话号码;抓住了指针,就能找到对应的实体(你家或者你这个人),就这么简单。
抓住了这个本质,一切就简单了:你的手机号码我记在一个黑色封面的本子里;这个本子放在第三张桌子的第四个抽屉里;桌子本身放在二年级五班的教室里;这个教室属于XX实验小学;这所学校在某某市……
你看,这就是多重指针:某某市-->某实验小学-->某教室-->某张桌子-->某个抽屉-->黑色封面的本子-->电话号码。
现在,看看这一串指针的类型:
某某市的类型是行政区域。
实验小学的类型的教育机构。
教室的类型是建筑物。
桌子的类型是家具。
抽屉的类型是家具部件。
笔记本的类型是文具。
电话号码当前的存储类型是光学文字,输入到电话机类型就是电磁信号……
要写程序了,怎么搞?
struct city { ... school schools[255]; //一座城市有255所学校 ... }; struct school { ... classroom classrooms[128]; //一所学校有128间教室 } struct classroom { char name[32]; //教室有名字 desk desks[64]; //和64张桌子 ... }
于是,程序里面怎么找你的电话号码?
pCity->schools[16].classrooms[17].desks[12]……
为什么一会儿"."一会儿"->"?这一串指针的类型分别是什么?如果不用数组怎么写?如果用了数组但另一个函数要求传入指针,又怎么写?
——复杂吧?多变吧?
但你会觉得它难以理解吗?
指针也是一样的东西。i是整型数据;指向i的指针是整型指针;指向指向i的指针的指针是指向整形数据的指针的指针……一成不变,单调的很。
比起行政区域一口气到看不见的电路状态,这玩意儿实在太简单了。
你为什么会觉得它难?
因为你“死磕”它。你压根不觉得自己能理解它,也不愿意去理解它。
你就觉得,这玩意儿就得死记硬背,就得“死磕”,结果磕死了也没理解——那,要不要继续死磕?
只要你还抱着这个态度,这种学习方法……不用学了,你学不会。
为什么死磕绝对学不会指针、更学不会计算机?
很简单,就是你死记硬背了这一串内容:
某某市的类型是行政区域。
实验小学的类型的教育机构。
教室的类型是建筑物。
桌子的类型是家具。
抽屉的类型是家具部件。
笔记本的类型是文具。
电话号码当前的存储类型是光学文字,输入到电话机类型就是电磁信号……
很遗憾,因为现实给你出的下一道题,可能就是某个停车场的出租车后备箱放到密码箱里面密写墨水隐写的信件……
你说你瞎背什么整型指针整型指针的指针整型指针的指针的指针整型指针的指针的指针的指针……
累死你,你知道抽屉里笔记本第六页第八行怎么说吗?
这就叫无用功。
这就叫用行动的勤奋来掩盖思想的懒惰。
动动脑子,几秒钟就能解决的简单问题(实际上何止解决!一旦想通你就能任意化用了),就这样被你死磕成了难题,连最简单最基础的运用都不会了。
其实吧,目前主流的程序设计语言除了C#和C++还能有限使用指针之外,并没有多少指针的用武之地。
但是死磕指针这个实在是有点儿奇怪,指针不应当是C语言中最复杂的东西,除了指针之外其他都掌握的还行?
除了指针之外,C语言还有什么其他的东西呢?函数、变量、表达式、预处理器和宏?
没弄明白指针,你接下来的数据结构的课咋上啊?要不趁早转Java去?
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有