char * names[] = {
"Sleepy",
"Dopey" "Doc",
"Happy",
"Grumpy" "Sneezy",
"Bashful",
};
sizeof(names)
会产生40。
但从逻辑上讲,sizeof会计算字符串长度加上空字符。为什么尺寸为40?
答案 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])
帮助系统独立。