Sizeof String Literal:揭示差異
考慮以下程式碼片段:
#include <iostream> using namespace std; int main() { const char* const foo = "f"; const char bar[] = "b"; cout << "sizeof(string literal) = " << sizeof("f") << endl; cout << "sizeof(const char* const) = " << sizeof(foo) << endl; cout << "sizeof(const char[]) = " << sizeof(bar) << endl; }
執行此程式碼會顯示有趣的re sults:
sizeof(string literal) = 2 sizeof(const char* const) = 4 sizeof(const char[]) = 2
了解結果
字串文字類型解釋
雖然sizeof計算字串文字所需的空間,但它不會改變其基礎類型。字串文字繼續具有「大小為 N of const char 的陣列」類型,其中 N 表示終止空字元。
陣列與指標行為
值得注意的是,陣列在傳遞給 sizeof 時不會衰減為指標。這意味著 sizeof(bar) 傳回的是數組本身的大小,而不是指向數組的指標的大小。
結論
綜上所述,sizeof(" f") 傳回字串文字所需的空間,包括空白字元。但是,由於涉及的類型差異,sizeof(foo) 和 sizeof(bar) 的行為有所不同。在 C 程式設計中使用字串文字時,理解這些細微差別至關重要。
以上是字串文字的「sizeof」、「const char* const」和「const char[]」有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!