我创建了一个包含9个元素的数组,但是当我运行代码时,它表示数组的大小实际为36.为什么它是36而不是9?
#include <iostream>
int main()
{
float ar[] =
{
0.1f, 0.2f, 0.3f,
0.4f, 0.5f, 0.6f,
0.7f, 0.8f, 0.9f
};
std::cout << "array size = " << sizeof(ar) << "\n";
for (int i = 0; i < sizeof(ar); i++)
{
std::cout << "array (" << i << ") = " << ar[i] << "\n";
}
return 0;
}
输出:
array size = 36
array (0) = 0.1
array (1) = 0.2
array (2) = 0.3
array (3) = 0.4
array (4) = 0.5
array (5) = 0.6
array (6) = 0.7
array (7) = 0.8
array (8) = 0.9
array (9) = 1.26117e-044
array (10) = 3.85682e-039
array (11) = 1.#QNAN
array (12) = 3.85687e-039
array (13) = 5.88404e-039
array (14) = 0
array (15) = 7.20267e-043
array (16) = 6.6267e+031
array (17) = 5.88404e-039
array (18) = 1.4013e-045
array (19) = 1.5076e-038
array (20) = 1.50692e-038
array (21) = 2.8026e-045
array (22) = 0
array (23) = 3.85687e-039
array (24) = 8.71369e+031
array (25) = 1.#QNAN
array (26) = 3.85694e-039
array (27) = 5.88418e-039
array (28) = 1.4013e-045
array (29) = 0
array (30) = 0
array (31) = 0
array (32) = 0
array (33) = 0
array (34) = 0
array (35) = 6.91554e+031
我的帖子不需要更多细节,不再需要更多文字 我的帖子不需要更多细节,不再需要更多文字 我的帖子不需要更多细节,不再需要更多文字 我的帖子不需要更多细节停止要求更多文字
答案 0 :(得分:4)
sizeof(ar);
以字节返回数组的大小。要获得元素的数量,您需要除以每个元素的大小:
int numElt = sizeof(ar) / sizeof(ar[0]);
C阵列提供了很多惊喜,您通常应该使用std::array
或std::vector
。