» 下一篇:
Linux平台下如何检测、调试C/C++程序内存泄漏?
6月 132012
善于总结得以提高水平、积累知识。
本文是对CSDN论坛话题——指针的危害的一篇总结。在这个话题中,众多网友对C/C++指针的使用进行了讨论。这是一个老话题,老调重谈,但却非常有意义,因为指针跟程序员是如此的亲密无间。
关于指针的使用,众多的C/C++程序员对它是即爱又恨,它带给我们灵活,也带给我们伤害。在每个C/C++程序员的成长过程中,相信都有受到过指针伤害的经历。曾经,我也对它产生过抗拒……
那么,我们该如何正确看待指针呢?下面是一些网友关于这个话题的回答:
@对于有经验的程序员,这不是问题呀。本来,程序员就应该对自己的代码负责。
@勇于面对BUG,善于解决BUG。
@不用指针的话,智能指针啊vector啊string啊又是怎么实现的?
莫非楼主就是传说中的“模块由别人来封装,我只要搭积木就可以了”式程序员?
标准库无疑效率高又安全
但如果你只会用标准库却做不到自己实现修改创新,那你这辈子也就只是个搭积木的
@汽车的车祸率那么高,你会为了避免出车祸一辈子骑自行车么?你应该做的是提升自己的驾驶技术,遵守驾驶规范,保证自身安全。
@
细节决定成败!
@VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!
指针即地址。“地址又是啥?”“只能从汇编语言和计算机组成原理的角度去解释了。”
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!
指针即地址。“地址又是啥?”“只能从汇编语言和计算机组成原理的角度去解释了。”
提醒:
“学习用汇编语言写程序”
和
“VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习C和汇编的对应关系。”
不是一回事!不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
“学习用汇编语言写程序”
和
“VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习C和汇编的对应关系。”
不是一回事!不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
@
所谓难者不会,会者不难。
另外,在武术中,所谓无招胜有招,无剑胜有剑。在七剑下天山中,白发魔女只用一根树枝和一条腰带就破了齐真君独创的风雷剑法。
只有学艺不精的人才喜欢那语言说事,说这不好那也不好。高手随便用一种语言都可以工作,完成所需的功能。
另外,在武术中,所谓无招胜有招,无剑胜有剑。在七剑下天山中,白发魔女只用一根树枝和一条腰带就破了齐真君独创的风雷剑法。
只有学艺不精的人才喜欢那语言说事,说这不好那也不好。高手随便用一种语言都可以工作,完成所需的功能。
从中可以看出,大家还是倾向于指针的使用。而且着重点是:深刻理解指针,提升水平。
此外,有资深网友推荐了一本书:《失控:全人类的最终命运和结局》(美)凯文·凯利
下面是关于一个指针使用的例子,看看你理解多少?是否真正的理解了指针?
这段程序你怎么看呢?它是什么原因呢?传参失败吗?这里的p还算不算局部变量呢?
» 文章出处:
reille博客—http://velep.com
, 如果没有特别声明,文章均为reille博客原创作品
» 郑重声明:
原创作品未经允许不得转载,如需转载请联系reille#qq.com(#换成@)