constStatic 2023-11-29 09:24 采纳率: 0%
浏览 4

请问为什么力扣题704中,取数组的长度,使用sizeof()/4在运行时候没有报错,但是提交之后报数组越界的错误呢?使用size又可以了。

请问为什么力扣题704中,取数组的长度,使用sizeof()/4在运行时候没有报错,但是提交之后报数组越界的错误呢?使用size又可以了。

  • 写回答

3条回答 默认 最新

  • 普通网友 2023-11-29 09:28
    关注

    在C++中, sizeof() 运算符用于获取一个对象或类型的字节大小。在使用 sizeof() 时,它返回的是对象或类型在内存中所占用的字节数。对于数组, sizeof() 返回的是整个数组的字节大小,而不是数组的长度。
    在力扣题704中,如果你使用 sizeof() 来获取数组的长度,它会返回整个数组的字节大小,而不是数组的元素个数。因此,使用 sizeof() 除以4并不会得到正确的数组长度,因为数组的元素可能不是4个字节大小。
    正确获取数组长度的方法是使用 size() 函数,它是 std::arraystd::vector 等容器类的成员函数,用于返回容器中元素的个数。对于普通数组,你可以使用 sizeof(array) / sizeof(array[0]) 来计算数组的长度。
    当你在运行时使用 sizeof() 除以4来获取数组长度时,可能不会引发错误,但是这种方法是不可靠的,并且容易导致数组越界错误。因此,在力扣题704中,建议使用 size() 函数来获取数组的长度,以确保正确性和安全性。
    总结一下,在C++中:

    • sizeof() 返回的是对象或类型在内存中所占用的字节数。
    • size() 是容器类的成员函数,用于返回容器中元素的个数。
    • 对于普通数组,可以使用 sizeof(array) / sizeof(array[0]) 来计算数组的长度。
      希望这个解释能够解决你的疑问。如果你有任何进一步的问题,请随时提问。
    评论

报告相同问题?

问题事件

  • 创建了问题 11月29日

悬赏问题

  • ¥15 程序实在不会写,要秃了
  • ¥15 pycharm导入不了自己的包
  • ¥15 C#.net通过内网url地址获取文件并下载问题,浏览器postman可以正常下载,用程序不行
  • ¥15 本人本科机械,目前研一。没有深度学习基础,目前对研究生课题一片迷茫,请教各位!
  • ¥15 关于R语言单因素与多因素线性回归的平均值
  • ¥15 服务器清除BIOS之后引导不了
  • ¥15 CPLEX用OPL编写的混合整数线性优化问题。
  • ¥15 可以用EasyConnect连接实验室内网,但无法连接内网才能访问的服务器,为什么?
  • ¥15 前端预览docx文件,文件从后端传送过来。
  • ¥15 层次聚类和蛋白质相似度