【发布时间】:2016-08-06 18:40:29
【问题描述】:
所以我一直以这种方式制作数组,但我发现了一个错误,可以说这是一个逐个元素复制和数组元素的循环:
int v1[] = { 3, 4, 7, 8};
int v2[sizeof(v1)];
for (auto i = 0; i < sizeof(v2); ++i)
{
v2[i] = v1[i]
}
v2 数组不会有 4 个整数的大小,它会将它们全部相加。所以 v2 的大小是 22 而不是 4 个整数。所以我想知道是否有任何方法可以找到数组的大小,而不必去数组并手动查看有多少元素。有办法吗?谢谢。
【问题讨论】:
-
只需将
sizeof(v1)和sizeof(v2)更改为sizeof(v1)/sizeof(int)和sizeof(v2)/sizeof(int)或sizeof(v1)/sizeof(v1[0])和sizeof(v2)/sizeof(v1[0]) -
sizeof(v1) 返回数组下内存的总字节大小,而不是 int 的计数。