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.

表一.變數所佔用記憶體空間
資料型別記憶體空間
int4 bytes
char1 bytes
float4 bytes
double8 bytes
pointer4 bytes



Reference:

  1. Data Mapping and Storage, IBM
  2. http://publib.boulder.ibm.com/infocenter/macxhelp/v6v81/topic/com.ibm.vacpp6m.doc/proguide/ref/rvimap.htm
  3. Qt教學與開發
  4. http://chenglearning.blogspot.tw/p/qt.html

留言

這個網誌中的熱門文章

VirtualBox教學:重設硬碟(.vdi)大小(上)

VirtualBox教學:重設硬碟(.vdi)大小(下)

VirtualBox教學: 新增Windows7虛擬電腦(下)