该篇为本人在工作编程中的一些心得体会,愿初入此道的小生们少走些弯路,我只愿面朝大海,春暖花开。(持续更新)
参考书籍
《C程序设计》谭浩强 编著
《C++面向对象程序设计》谭浩强 编著
《UNIX环境高级编程》等
重要性
对某个知识点(或函数或类)的概念的理解,你可能会百度,goole等查一下,这只能得到个大概(或众说纷纭或没有),并且是别人的观点,不一定准确。若要深入正确的理解,你需要权威,也就是参考书。怀疑的态度
但本人大多数时候喜欢百度,因为我只需要一个大概的理解,网上搜一下快捷方便。此时你需要理智的接受信息,而不是一股脑全信。一般一个新的信息你不懂,需暂时相信,或在多个搜索中筛选判断,形成自己的判断,这个判断也请在内心保留一份怀疑,它只适用现在的狭隘环境。
我大学时常常觉得我对c,c++的知识点很是理解,理论考试及实验编程基本满分(给我减了一分可能是怕我傲娇),觉得自己蛮拽的,接着打脸的time到了。工作中编程总出现这啊那啊的问题,其中就很有些概念性的问题,比如指针之类,老是惊叹一声“阿西吧,居然可以这么用”“我去,是这么回事啊,我真是天才”,我发现,随着时间及我处理的问题的变化,对概念的理解是在慢慢改变或有新的理解。以前的理解总有这啊那啊的错误。然后我开始怀疑人生。
是的,没有绝对的真理,它可能适应某一种环境,但在某一其它特定环境,它又是一种错误。就拿力学来说,19世纪是牛顿的天下,经典力学牛掰轰轰,但现代物理学就易主了,薛定谔的量子力学和爱因斯坦的相对论。所以说没有绝对的真理,说不定22世纪的物理学理论奠基人就是我了。(不要拿鸡蛋砸我,你就那么肯定不是我,都说了没有绝对,你这孩子。就算不是我,也可能是zhaozhongtao吧)权威
谭浩强的这两本教科书,权威中的权威,我每每翻开查找,都会有新的发现,觉得在某些方面蛮强大的,因为以前觉得它只是为初学者设计的,轻视它。但它的定位是对概念的精准阐述,并没有深入讲解。因此你需要选择一本专业方向的书籍。
我选的这本《UNIX环境高级编程》就是对各种函数的精准解析,适用范围,以及C99对C89的改进及原因分析。本人受益良多。
缓冲区溢出
概念
缓冲区溢出,简单的说就是计算机对接收的输入数据没有进行有效的检测 (理想的情况是程序检查数据长度并不允许输入超过缓冲区长度的字符),向缓冲区内填充数据时超过了缓冲区本身的容量,而导致数据溢出到被分配空间之外的内存空间,使得溢出的数据覆盖了其他内存空间的数据。原理图
危害
两种危害:
在当