请问为什么力扣题704中,取数组的长度,使用sizeof()/4在运行时候没有报错,但是提交之后报数组越界的错误呢?使用size又可以了。
3条回答 默认 最新
- 普通网友 2023-11-29 09:28关注
在C++中,
sizeof()
运算符用于获取一个对象或类型的字节大小。在使用sizeof()
时,它返回的是对象或类型在内存中所占用的字节数。对于数组,sizeof()
返回的是整个数组的字节大小,而不是数组的长度。
在力扣题704中,如果你使用sizeof()
来获取数组的长度,它会返回整个数组的字节大小,而不是数组的元素个数。因此,使用sizeof()
除以4并不会得到正确的数组长度,因为数组的元素可能不是4个字节大小。
正确获取数组长度的方法是使用size()
函数,它是std::array
和std::vector
等容器类的成员函数,用于返回容器中元素的个数。对于普通数组,你可以使用sizeof(array) / sizeof(array[0])
来计算数组的长度。
当你在运行时使用sizeof()
除以4来获取数组长度时,可能不会引发错误,但是这种方法是不可靠的,并且容易导致数组越界错误。因此,在力扣题704中,建议使用size()
函数来获取数组的长度,以确保正确性和安全性。
总结一下,在C++中:-
sizeof()
返回的是对象或类型在内存中所占用的字节数。 -
size()
是容器类的成员函数,用于返回容器中元素的个数。 - 对于普通数组,可以使用
sizeof(array) / sizeof(array[0])
来计算数组的长度。
希望这个解释能够解决你的疑问。如果你有任何进一步的问题,请随时提问。
解决 1无用 -
悬赏问题
- ¥15 程序实在不会写,要秃了
- ¥15 pycharm导入不了自己的包
- ¥15 C#.net通过内网url地址获取文件并下载问题,浏览器postman可以正常下载,用程序不行
- ¥15 本人本科机械,目前研一。没有深度学习基础,目前对研究生课题一片迷茫,请教各位!
- ¥15 关于R语言单因素与多因素线性回归的平均值
- ¥15 服务器清除BIOS之后引导不了
- ¥15 CPLEX用OPL编写的混合整数线性优化问题。
- ¥15 可以用EasyConnect连接实验室内网,但无法连接内网才能访问的服务器,为什么?
- ¥15 前端预览docx文件,文件从后端传送过来。
- ¥15 层次聚类和蛋白质相似度