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; }
执行此代码会显示有趣的results:
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中文网其他相关文章!