以下代码#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 关注
- 383 浏览
添加回答
举报
0/150
提交
取消