国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
C語(yǔ)言入門教程-為什么要用指針?

為什么要用指針?

假設(shè)您想制作一個(gè)文本編輯器——一種用于編輯普通ASCII文本文件的程序,如UNIX上的“vi”或Windows上的“記事本”。文本編輯器是很常用的軟件,因?yàn)榭上攵鼛缀跏浅绦騿T使用最多的程序了。通過(guò)文本編輯器程序員才能和計(jì)算機(jī)“親密接觸”——您使用它輸入并實(shí)現(xiàn)自己的創(chuàng)意。對(duì)于這么一個(gè)使用如此頻繁又如此親近的程序,您自然希望它是完美無(wú)缺的。于是許多程序員自己制作文本編輯器并進(jìn)行定制,以適合個(gè)人的工作方式和偏好。

現(xiàn)在您要制作自己的編輯器了。考慮過(guò)所需的功能后,您開(kāi)始思考編輯器使用的“數(shù)據(jù)結(jié)構(gòu)”,即在內(nèi)存中如何組織文件以供程序進(jìn)行操作。您需要的是一種便于對(duì)輸入信息進(jìn)行簡(jiǎn)單快捷操作的存儲(chǔ)方式。您確信將字符按行存儲(chǔ)是一種可行的方法。根據(jù)前面學(xué)到的知識(shí),現(xiàn)在可用的只有數(shù)組。您想:“一行一般是80個(gè)字符,一個(gè)文件一般不會(huì)超過(guò)1,000行。”于是您聲明了一個(gè)二維數(shù)組,像這樣:

 

char doc[1000][80];

此聲明要求分配的數(shù)組有1,000行,每行80個(gè)字符。數(shù)組的規(guī)模是80,000個(gè)字符。

然而,當(dāng)您對(duì)編輯器和它使用的數(shù)據(jù)結(jié)構(gòu)進(jìn)行了一些深入思考后,還會(huì)認(rèn)識(shí)到下面三點(diǎn):

  • 有些文檔的內(nèi)容是長(zhǎng)長(zhǎng)的列表。每行很短,卻有上千行。
  • 有些特殊文本文件有很長(zhǎng)的行。比如有的數(shù)據(jù)文件可能包含長(zhǎng)達(dá)542個(gè)字符的行,每個(gè)字符好像是代表DNA片段中的一個(gè)氨基酸。

     

  • 大多數(shù)現(xiàn)代編輯器都允許同時(shí)打開(kāi)多個(gè)文件。

假如您設(shè)定最多可以同時(shí)打開(kāi)10個(gè)文件,每行最多1,000個(gè)字符,每個(gè)文件最多50,000行。這時(shí)的聲明就變成了:

 

char doc[50000][1000][10];

 

似乎看起來(lái)并不過(guò)分,可是您拿出計(jì)算器算一下50,000乘1,000乘10 就會(huì)發(fā)現(xiàn)數(shù)組包含了5億個(gè)字符!如今的大多數(shù)計(jì)算機(jī)遇到這么大的數(shù)組的都會(huì)出問(wèn)題。它們根本沒(méi)有足夠的RAM甚至虛擬內(nèi)存空間來(lái)容納這么龐大數(shù)組。即使是在最大的多用戶系統(tǒng)上,如果多個(gè)用戶要同時(shí)運(yùn)行三四個(gè)這種編輯器程序的話,對(duì)系統(tǒng)也會(huì)造成嚴(yán)重的負(fù)擔(dān)。

即使計(jì)算機(jī)可以承受這么大規(guī)模的數(shù)組,您也能看出這是對(duì)存儲(chǔ)空間的巨大浪費(fèi)。如果編輯器聲明了一個(gè)5億字符大小的數(shù)組,而絕大多數(shù)情況下打開(kāi)的只是百行左右、四五千字節(jié)的文件的話,那么這確實(shí)是有些不合情理的。使用數(shù)組的一個(gè)問(wèn)題是必須在開(kāi)始就將它的每一維都聲明成最大值,而各維最大值的乘積常常是一個(gè)非常大的數(shù)字。不僅如此,您如果需要編輯一個(gè)有2,000個(gè)字符的行的文件的話,又只能是無(wú)計(jì)可施了。其實(shí),事先預(yù)計(jì)并處理文本文件每行的最大長(zhǎng)度是不可能的,因?yàn)閲?yán)格說(shuō)來(lái)這一長(zhǎng)度是無(wú)限的。

指針正好可以用來(lái)解決這個(gè)難題。使用指針您能夠創(chuàng)建動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)。這時(shí)內(nèi)存將在程序運(yùn)行的時(shí)候從堆上分配,而不用一開(kāi)始就聲明數(shù)組的最大規(guī)模。這樣您就可以為每個(gè)文檔準(zhǔn)確地分配內(nèi)存而不會(huì)產(chǎn)生浪費(fèi)。而且,關(guān)閉一個(gè)文檔時(shí)您還可以把它占用的內(nèi)存返回給堆,以供程序的其他部分使用。使用指針,內(nèi)存就可以在程序運(yùn)行期間不斷被回收利用。

順便說(shuō)一句,如果您讀了上面的討論后頭腦中的一大疑惑是:“到底什么是字節(jié)呢?”,那么位和字節(jié)的原理這篇文章將有助于您理解相關(guān)的概念,包括“兆”、“吉”、“太”等等。請(qǐng)閱讀那篇文章后再回來(lái)繼續(xù)學(xué)習(xí)。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
C語(yǔ)言入門100題
C 的文件操作
[轉(zhuǎn)]想成為嵌入式程序員應(yīng)知道的16個(gè)基本問(wèn)題
《C語(yǔ)言程序設(shè)計(jì)》第10章 文件寫(xiě)字字帖
VFP常用命令詳解
用指針數(shù)組處理字符串
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服