C++資料結構與演算法: 計算字串長度
int StringOperation::length(char *sptr)
{
char *move=sptr;
while(*move)
{
move++;
}
return (move-sptr);
}
以上的程式碼,我利用移動指標計算字串的長度,而指標的移動主要對記憶體位置進行計算.如以下所示,我們宣告字元陣列vowel,而陣列通常在記憶體是連續的,因此指標利用此特性對字元陣列進行存取.
char vowel[6]="AEIOU";
圖一.字串陣列記憶體分布情形 |
指標的移動單位與指向的資料型別有關,例如假設指標sptr指向字元資料Vowel[0],而此指標的移動單位即1 bytes,因此當程式執行sptr++時,指標所記錄的地址會從530692變成5306393. 換言之,若sptr指向浮點數資料double時,指標的移動單位則是8 bytes,因此執行sptr++時,sptr 的記憶體位置將直接加8.
資料型別 | 記憶體空間 |
---|---|
int | 4 bytes |
char | 1 bytes |
float | 4 bytes |
double | 8 bytes |
pointer | 4 bytes |
Reference:
- Data Mapping and Storage, IBM http://publib.boulder.ibm.com/infocenter/macxhelp/v6v81/topic/com.ibm.vacpp6m.doc/proguide/ref/rvimap.htm
- Qt教學與開發 http://chenglearning.blogspot.tw/p/qt.html
留言
張貼留言