瀏覽單個文章
SGI
Major Member
 
SGI的大頭照
 

加入日期: Sep 2003
文章: 263
回覆: 回覆: VC++的幾個問題part05..

引用:
Originally posted by harrisonlin
好久不見啦~

1.陣列的長度 / 個別元素的長度,不就是陣列的元素的個數了嗎?

2. "指標陣列和一般的字元陣列相比,占用的記憶體會比較小"...我猜你大概是指「字串(char *)為什麼比字元陣列節省記憶體」吧(不是指標陣列)?!

如果要處理的字串長度變化大時(例如每個人的通訊地址),若是使用字元陣列,你必需要宣告一個「足夠大」的陣列,以應付各種可能(也許有人連太陽系地球都寫進去),那麼不但這個長度不好拿捏,且若是填入的字串很短,那麼豈不浪費剩餘的空間?簡單地說,就是「彈性差」,但是「效率高」,因為它在編譯期就知道要配置多大的記憶體空間了(好比你出去玩之前就先跟飯店訂好房間,那麼你一到目的地後就可以馬上下榻;若是你到了飯店再問有沒有空房,櫃臺再去查電腦,然後再告訴你房間號碼,這樣自然是比較慢的了)!

反之,若是使用字串,那就會在程式被執行時才去尋找一個可用的、連續的記憶體空間來放置這個字串,所以它的「彈性高」,但「效率差」(就好比你出發去玩之前不先找飯店訂房間,到了目的地之後再去找;這間飯店沒有房了再找另一間,直到找到為止)!這裡的彈性,指的就是「浪費記憶體的程度」囉!

------------------------------------------------------------------
真的好久不見囉~又要麻煩大大線上教學了

1)容小弟囉嗦一點,我舉個例子好了

char* PP[]={ "Merry Christmas",
"Happy Birthday",
"Happy New Year"
};
int num=(sizeofPP)/(sizeofPP[0]);

在以上敘述中小弟有幾個問題:
(a)在以上陣列中,是否佔用了3個不同記憶體位置來儲存這3個
不同的字串?
(b)PP[0]是否單指"Merry Christmas"這個字串?,如果是,
為何 (sizeofPP)/(sizeofPP[0]) 就可代表整列字串的元素個數?
這3個字串不是都不一樣長,佔用的位元數也都不一樣嗎?


2)嗯...我有一點被搞混了
大大你所謂的字串陣列是不是指像這樣

char* PP[]={ "Merry Christmas",
"Happy Birthday",
"Happy New Year"
};
這不是"指標型態的字串陣列"嗎?

而字元陣列是不是像這樣

const int MAX=100;
char QQ[MAX]="Hello!";

但是不是所有字串陣列都會用指標表示
所以大大你的意思是說"宣告為指標型態的字串陣列會比字
元陣列來得有彈性是嗎"?

最近一直在指標陣列這邊繞啊繞的
感覺越繞越迷糊....
舊 2003-10-14, 05:29 PM #4
回應時引用此文章
SGI離線中