猿问

字符串文字的大小

以下代码


#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) = 2

sizeof(const char* const) = 4

sizeof(const char[]) = 2

在使用GCC编译的32位操作系统上。


为什么要sizeof计算字符串文字的长度(所需的空间)?

给予时,字符串文字是否具有不同的类型(与char *或char []不同)sizeof?


翻过高山走不出你
浏览 384回答 2
2回答

哆啦的时光机

sizeof返回其操作数的字节大小。这应该回答问题编号1 ;;)而且,当传递给时,字符串文字的类型为“数组为n const char”&nbsp;sizeof。您的测试用例,一一列出:"f"是由两个字符组成的字符串文字,该字符f和终止NUL。foo&nbsp;是一个指针(编辑:不考虑限定词),并且指针在您的系统上似乎是4个字节长。对于bar情况与相同"f"。希望能有所帮助。
随时随地看视频慕课网APP
我要回答