以下代碼#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;}輸出sizeof(string literal) = 2sizeof(const char* const) = 4sizeof(const char[]) = 2在使用GCC編譯的32位操作系統上。為什么要sizeof計算字符串文字的長度(所需的空間)?給予時,字符串文字是否具有不同的類型(與char *或char []不同)sizeof?
2 回答

哆啦的時光機
TA貢獻1779條經驗 獲得超6個贊
sizeof
返回其操作數的字節大小。這應該回答問題編號1 ;;)而且,當傳遞給時,字符串文字的類型為“數組為n const char” sizeof
。
您的測試用例,一一列出:
"f"
是由兩個字符組成的字符串文字,該字符f
和終止NUL。foo
是一個指針(編輯:不考慮限定詞),并且指針在您的系統上似乎是4個字節長。對于
bar
情況與相同"f"
。
希望能有所幫助。
- 2 回答
- 0 關注
- 406 瀏覽
添加回答
舉報
0/150
提交
取消