考虑
int array[5]{};
std::cout << std::size(array) << std::endl;
这将给我 5 的结果。
int array[5]{};
std::cout << sizeof(array) << std::endl;
这将给我 20 的结果。
这是为什么呢? size 和 sizeof 有什么区别?
最佳答案
std::size
返回数组元素的数量。sizeof
是一个运算符,返回对象在内存中占用的字节数。
在您的例子中,int
占用 4 个字节,因此 sizeof
返回的值是 std::size
的 4 倍。
引用资料:
编辑
@303 问“我们什么时候还应该使用 sizeof
而不是 std::size
?一个简短的回答:从不,特别是在与“应该”相关的情况下。有使用 sizeof
计算数组元素数量的老技巧:
int arr[] = {1, 2, 3, 4, 5};
size_t arr_size = sizeof(arr)/sizeof(arr[0]);
但这应该永远在现代 C++ 中使用。
关于c++ - 确定数组大小时,std::size() 与 sizeof() 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68158839/