C++ 了解字符指针数组的大小

C++ 了解字符指针数组的大小,c++,c,C++,C,sizeof(names)结果为40 但从逻辑上讲,sizeof计算字符串长度加上空字符。为什么大小是40?您的数组包含五个指针,而在您的平台上sizeof(char*)是8-所以5*8=40。这里有两种大小:每个char数组的大小(您在问题中描述的)和名称的大小,这是一个指针数组 例如: char * names[] = { "Sleepy", "Dopey" "Doc", "Happy",

sizeof(names)
结果为40


但从逻辑上讲,sizeof计算字符串长度加上空字符。为什么大小是40?

您的数组包含五个指针,而在您的平台上
sizeof(char*)
8
-所以5*8=40。

这里有两种大小:每个char数组的大小(您在问题中描述的)和
名称的大小,这是一个指针数组

例如:

char * names[] = {
              "Sleepy",
              "Dopey" "Doc",
              "Happy",
              "Grumpy" "Sneezy",
              "Bashful",
};
字符串长度:

auto size_array = sizeof(names) / sizeof(char*); // (should yield 5)

为什么不使用std::array或vector?这些方法具有长度方法,可以跟踪元素的数量。 或者,您可以使用:

auth e0_length = std::strlen(names[0]);
有助于系统独立性。

5个元素是64位(8字节)指针。40字节。仅供参考,
“Grumpy”“Sneegy”
“GrumpySneegy”
相同。这似乎不是有意的。。。。同样适用于
“Dopey”“Doc”
 sizeof(names)/sizeof(names[0])