百科问答小站 logo
百科问答小站 font logo



请问学 C 有必要死磕指针吗? 第1页

  

user avatar   s.invalid 网友的相关建议: 
      

死磕……这两个字实在太形象了。


简单说吧,指针这么简单的、理解了原理就一通百通的问题,为什么要死磕?


指针是什么?

指针就是地址,就是你的电话号码;抓住了指针,就能找到对应的实体(你家或者你这个人),就这么简单。


抓住了这个本质,一切就简单了:你的手机号码我记在一个黑色封面的本子里;这个本子放在第三张桌子的第四个抽屉里;桌子本身放在二年级五班的教室里;这个教室属于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的指针的指针是指向整形数据的指针的指针……一成不变,单调的很。

比起行政区域一口气到看不见的电路状态,这玩意儿实在太简单了。


你为什么会觉得它难?

因为你“死磕”它。你压根不觉得自己能理解它,也不愿意去理解它。

你就觉得,这玩意儿就得死记硬背,就得“死磕”,结果磕死了也没理解——那,要不要继续死磕?


只要你还抱着这个态度,这种学习方法……不用学了,你学不会。


为什么死磕绝对学不会指针、更学不会计算机?


很简单,就是你死记硬背了这一串内容:

某某市的类型是行政区域。
实验小学的类型的教育机构。
教室的类型是建筑物。
桌子的类型是家具。
抽屉的类型是家具部件。
笔记本的类型是文具。
电话号码当前的存储类型是光学文字,输入到电话机类型就是电磁信号……

很遗憾,因为现实给你出的下一道题,可能就是某个停车场的出租车后备箱放到密码箱里面密写墨水隐写的信件……


你说你瞎背什么整型指针整型指针的指针整型指针的指针的指针整型指针的指针的指针的指针……

累死你,你知道抽屉里笔记本第六页第八行怎么说吗?


这就叫无用功。

这就叫用行动的勤奋来掩盖思想的懒惰。


动动脑子,几秒钟就能解决的简单问题(实际上何止解决!一旦想通你就能任意化用了),就这样被你死磕成了难题,连最简单最基础的运用都不会了。


user avatar   Ivony 网友的相关建议: 
      

其实吧,目前主流的程序设计语言除了C#和C++还能有限使用指针之外,并没有多少指针的用武之地。


但是死磕指针这个实在是有点儿奇怪,指针不应当是C语言中最复杂的东西,除了指针之外其他都掌握的还行?

除了指针之外,C语言还有什么其他的东西呢?函数、变量、表达式、预处理器和宏?

没弄明白指针,你接下来的数据结构的课咋上啊?要不趁早转Java去?


user avatar   william-lim 网友的相关建议: 
      

也理解也不理解。

十几、二十年前左右,我还在大学里混日子。那时候也没啥智能手机,晚上熄灯后,要么睡要么就是听收音机。忘了是北京广播电台的那个频道了,节目之间有段音频片花,大致是这样的:古典的北京,“一句京剧唱腔”,现代的北京,“几句英文词儿的Rap”。好像还有几个排比句,不大记得了。

相信网友们都看出来了,问题还是在于“现代的北京”。它赤裸裸的向包括我在内的听众传递了这样的文化现代观——西方的、流行的。

也因此,网上对文科生的那种模糊的偏见我也有。你想,这些专门从事文化传播行业的人尚且如此,既不打算创造、也不打算引领,既没文化,也没有志气。

所以,我在网上碰到那些鄙视理科生没文化的观点时,我都轻轻翻过页面。毕竟,对于一个搞技术的人来说,如果鄙视我们的人能创造出有吸引力的文化作品,咱也是乐观其成呀!

这就是我不能理解的地方,按理说,文化的创造者理应在未知的、未曾到过的地方探寻不一样的可能性,从而实现自己的价值。在陈旧的、充满偏见的形式上展现自己的文化品味,看起来就像是几年前有人搞出来的比基尼京剧。

不过,实事求是的说,这种文化心理简直不要太普遍,这也不只是文化领域的问题。你看,我们搞个篮球真人秀,现场DJ都要用飙英语的方式烘托气氛。这早就是大众心理了。

所以我说,这又是能理解的。说白了,这是文化落后这个基本事实的果,而不是因。




  

相关话题

  网游服务器逻辑和传输如何分层/解耦? 
  如果要改进C语言,您最希望添加哪些语言特性,移除哪些语言特性? 
  当你学会了什么之后感觉自己的编程算是入门了? 
  为什么 C++ std::map::operator[] 不提供 const 版本? 
  C++中怎么区分char和数值? 
  如何学习递归呢? 
  C++在面向对象编程中,非虚继承和非虚析构函数的存在是为了解决什么问题? 能否都用虚继承和虚析构函数? 
  带一堆指针的链式结构怎么写才好? 
  一个N*N的矩阵,取值为0或1,有什么好的算法判断一行或一列全为1啊? 
  如何学习递归呢? 

前一个讨论
开关电源原理是什么?
下一个讨论
大家用过最棒的牙膏是哪一款?





© 2024-11-24 - tinynew.org. All Rights Reserved.
© 2024-11-24 - tinynew.org. 保留所有权利