前言 数组与指针的艺术
?此文是筆者2005年所作《再再論指針》的修訂版,與前文相比,本文主要的不同點(diǎn)有如下幾點(diǎn):
?
一、引用C/C++標(biāo)準(zhǔn)的條款去闡述原理。C與C++標(biāo)準(zhǔn)共有四個(gè)已發(fā)行的正式版本,分別是C89/C90、C99、C++98和C++2003,為了避免重復(fù)的條款引用,在文字或語(yǔ)義相同的情況下,筆者只引用C99的條款,遇到不同的情況時(shí)再分別引用。
二、加入了C++的內(nèi)容。
三、增加或者合并了一些章節(jié),同時(shí)修正了一些行文錯(cuò)誤。
?
? 指針是C/C++的靈魂!它是C/C++眾多引人入勝的特性中的一朵奇葩。與底層操作的親密接觸是指針與生俱來(lái)的優(yōu)點(diǎn),利用指針可以寫(xiě)出許多短小精悍、效率極高的代碼。它是C/C++一把無(wú)可替代的利器,憑著這把利器,C/C++與其它高級(jí)語(yǔ)言相比至少在效率方面勝人一籌。
?
但是,由于數(shù)組與指針的原理與使用方式跟人們通常的思維習(xí)慣有較大差別,需要花較多的時(shí)間進(jìn)行消化,這使得對(duì)數(shù)組與指針的偏見(jiàn)和誤解成為了普遍存在的現(xiàn)象,更出現(xiàn)了避免使用指針的思潮,筆者認(rèn)為這是非常不可取的。指針是如此犀利,正是它才使得C/C++語(yǔ)言威猛無(wú)比。如果就這樣把它放棄了,那么C/C++就算是白學(xué)了。我們應(yīng)當(dāng)讓指針成為你手中那把砍掉索倫手指上魔戒的舉世無(wú)雙的納西爾圣劍,而不是你心中永遠(yuǎn)的魔戒。
?
與眾多初學(xué)者一樣,筆者對(duì)數(shù)組與指針的理解也經(jīng)歷了漫長(zhǎng)的過(guò)程。初學(xué)C的時(shí)候,筆者作為譚書(shū)的受害者之一,與其它初學(xué)者一樣腦袋中充滿(mǎn)了對(duì)數(shù)組與指針各種各樣的誤解。后來(lái)隨著對(duì)C/C++理解的深入,逐漸發(fā)現(xiàn)譚書(shū)中存在大量的謬誤與漏洞,從此開(kāi)始了糾偏的歷程。這是一段痛并快樂(lè)著的過(guò)程,痛是由于憤恨被謀殺了一段寶貴的時(shí)光,快樂(lè)是因?yàn)橹匦抡业搅朔较?#xff0c;相信不少朋友也曾有過(guò)跟筆者相似的體會(huì)。在這段時(shí)間里,筆者查閱了大量的資料,也耗費(fèi)了大量的時(shí)間進(jìn)行深刻的思考,還跟同事、朋友、網(wǎng)友進(jìn)行了大量的辯論,特別是2005年,幾乎整整一年的時(shí)間都是在激烈的辯論中渡過(guò)的,當(dāng)年這些辯論的激烈程度到現(xiàn)在還記憶猶新,如果當(dāng)時(shí)手里有把槍的話,我想我會(huì)開(kāi)槍的!經(jīng)過(guò)不斷的思考、辯論、印證,再思考、再辯論、再印證,數(shù)組與指針的迷霧終于逐漸清晰了起來(lái)。
?
? 本文的目的,是希望通過(guò)跟各位朋友一起討論關(guān)于數(shù)組與指針的幾個(gè)關(guān)鍵概念及常見(jiàn)問(wèn)題,加深對(duì)數(shù)組與指針的理解。筆者不敢奢望能夠完全解開(kāi)你心中的魔結(jié),但如果通過(guò)閱讀本文,能夠讓你在日后的數(shù)組與指針使用過(guò)程中減少失誤,筆者就心滿(mǎn)意足了。
?
當(dāng)你閱讀本文后:
?
? 如果你有不同的意見(jiàn),歡迎你在評(píng)論里留下自己的見(jiàn)解,筆者很樂(lè)意跟你一起討論,共同進(jìn)步。
?
? 如果你覺(jué)得我說(shuō)的全都是廢話,那么恭喜你,你的指針已經(jīng)畢業(yè)了。
?
? 如果你有太多不明白的地方,那么我介紹你先找一些關(guān)于數(shù)組與指針的讀物看看,筆者推薦你閱讀一本叫《C與指針》的書(shū),看完后再回來(lái)繼續(xù)思考你的問(wèn)題。
發(fā)表于 @ 2009年11月23日 11:05:00 | 評(píng)論( 1 ) | 編輯| 舉報(bào)
本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/supermegaboy/archive/2009/11/23/4855036.aspx
總結(jié)
以上是生活随笔為你收集整理的前言 数组与指针的艺术的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 数组与指针的艺术--深入探索c/c++数
- 下一篇: 第一章:数组与指针概念剖析