c++ - 确定数组大小时,std::size() 与 sizeof() 之间的区别

标签 c++ sizeof

考虑

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/

相关文章:

c++ - std::shared_ptr _BLOCK_TYPE_IS_VALID(pHead->nBlockUse) 改变指针时

c++ - 错误 LNK2001 : unresolved external symbol Visual C++

c++ - OpenGL加载OBJ模型,纹理失真

c++ - 从 Spidermonkey 获取最后一段 JavaScript 代码

C - 结构内静态字符数组上的 sizeof() - 不可能?

c++ - 为什么这个结构的大小看起来应该是 12/24 却为 40?

c++ - Boost序列化编译问题

c++ - 为什么 sizeof 在不同的 IDE 上返回不同的值?

c - sizeof 运算符背后的逻辑

c++ - 不同大小的结果