簡體   English   中英

C ++中的sizeof字符串數組

[英]sizeof string array in C++

我對C ++中的sizeof字符串數組感到困惑,我有以下字符串數組:

static const char* namedButtonStr[] = {
        "GLUT_LEFT_BUTTON",
        "GLUT_MIDDLE_BUTTON",
        "GLUT_RIGHT_BUTTON"
};

要獲得此數組的大小,請使用以下代碼:

int size = int(sizeof(namedButtonStr)/sizeof(namedButtonStr[0]));

其中sizeof(namedButtonStr)為12, sizeof(namedButtonStr[0])為4,並且數組的大小為12/4 = 3。

我的問題是,為什么sizeof(namedButtonStr)是12而sizeof(namedButtonStr[0])是4? 我的理解是sizeof(namedButtonStr)是3而sizeof(namedButtonStr[0])是17(“GLUT_LEFT_BUTTON”有17個字符)。

namedButtonStr[0]的類型為const char* ,因此它的sizeof是指針的大小,而不是它指向的數組。

相反, namedButtonStr是一個數組,因此它的sizeof是整個數組的字節sizeof ,即3 * sizeof(<one item in the array>)


編輯:順便說一句,這是一個非常標准的習慣用於確定數組的大小,你會經常看到它。

我的問題是,為什么sizeof(namedButtonStr)是12而sizeof(namedButtonStr[0])是4? 我的理解是sizeof(namedButtonStr)是3而sizeof(namedButtonStr[0])是17(“GLUT_LEFT_BUTTON”有17個字符)。

namedButtonStr將包含3個指針。 (一般來說,C指針是4個字節,這可能會隨着64位總線變得普遍而改變,以及64位編譯器。)

因此,3個指針* 4(每個指針的字節數)= 12個字節。

namedButtonStr[0]指的是這3個指針中的單個/第一個,如上所述,每個指針是4個字節。

結果是12/4 = 3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM