可能产生不安全因素的地方多了,随着你学习的深入和编程经验的累积,你将会发现C是除汇编之外最多不安全陷阱的编程语言。C的强大,在于它把各种细节都交给你去处理,也能允许你用指针之类的粗暴手段硬把安全因素破坏掉而获得本来不应该获得的东西。溢出和越界之类,不过是C程序侵犯到操作系统的保护领域时被踢出而已,如果不侵犯到操作系统的领域,就真能让你为所欲为了。比如向ROM写数据之类,就是用C做的,这也是各种驱动程序向保护式操作系统申请的特权(如果是以前的DOS,写了也就写了,不用跟操作系统打招呼,现在的Windows之类,才要插手不允许程序随便这样做)。也就是说,并非C不能溢出、越界,而是操作系统不允许溢出和越界,安全与不安全,是操作系统判定的,C语言本身无所谓安全性,它根本就不是安全性语言。其他语言自身就不允许出现越界,但C允许,所以它“强大”。
一些所谓的“高手”,像崂山道士一样,以拥有穿墙术为能。穿墙行为本身无所谓好坏,好坏不过在于你是否合法穿墙,在不应该穿墙的地方穿墙,确实是你的本事,但是坏事。身怀穿墙术,是不是那么值得炫耀和追求,见仁见智了。指针技术充满陷阱,是现代编程语言都极力避免的东西,无非是它非常不安全,但就有那么一些人,以精通指针技术为能事,以其为判断高手的标准,不过是这个道理罢了。归根结底,是你学编程想干什么的问题,不打算敲门而入的,当然要苦练穿墙术了。以什么出发点推崇C的强大,是首要问题。如果你学编程不过是希望做个学生管理系统之类,却去苦练指针技术,那是入错门了。
[
本帖最后由 TonyDeng 于 2011-10-31 03:13 编辑 ]