【发布时间】:2020-08-16 23:38:38
【问题描述】:
我正在学习如何查找数组的长度,但我对这个解决方案感到困惑。我试图在网上找到解释,但似乎没有。
int arr[5] = {5, 8, 1, 3, 6};
int len = *(&arr + 1) - arr;
cout << "The length of the array is: " << len;
【问题讨论】:
-
我很困惑为什么这段代码会不断出现。有一种很好且易于理解的方法来获取数组的大小:
sizeof(array)/sizeof(*array)。这既简单又干净。相反,即使是 C++ 专家也不清楚上面显示的代码是否合法。 -
那个解决方案也不错。只是我想了解两者。
-
最佳解决方案是
std::size(arr)(en.cppreference.com/w/cpp/iterator/size)。无需担心额外的知识,它会按预期工作。