如何获取数组的准确大小

len*_*ena -2 c++

我用这种方式声明了数组:

int arr[50]; 
Run Code Online (Sandbox Code Playgroud)

在代码中我只使用了这个尺寸的 10 个,例如:

for (int i = 0; i < 10; i++) {
    arr[i] += 5;
}
Run Code Online (Sandbox Code Playgroud)

现在我想获得数组的确切大小应该是(10)。我用了

int size = sizeof(arr) / sizeof(arr[0]);
Run Code Online (Sandbox Code Playgroud)

但这给了我以 50 表示的数组的所有大小。

Chr*_*ris 5

像您所显示的那样的原始 C 样式数组不会跟踪您在其中“使用”了多少值。您必须手动跟踪它。

如果标签正确并且您使用的是 C++(而不是使用 C++ 编译器编译的 C),那么我建议您是否需要数组中的可变数量的元素并且需要知道其中有多少个元素,您应该使用std::vector而不是原始 C 数组。

此外,您的代码正在添加到未初始化5数组的前十个元素。数组中的初始值是不确定的,因此结果将是不可预测的。