了解char指针数组的大小

时间:2014-05-22 14:49:14

标签: c++ c

char * names[] = {
              "Sleepy",
              "Dopey" "Doc",
              "Happy",
              "Grumpy" "Sneezy",
              "Bashful",
};

sizeof(names)会产生40。

但从逻辑上讲,sizeof会计算字符串长度加上空字符。为什么尺寸为40?

3 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:0)

这里有两种类型的大小:每个char数组的大小(在你的问题中描述的内容)和names的大小,这是一个指针数组。

例如:

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

字符串长度:

auth e0_length = std::strlen(names[0]);

答案 2 :(得分:0)

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

 sizeof(names)/sizeof(names[0])

帮助系统独​​立。