老师,这样计算数组长度为什么不对?

来源:2-1 选择排序法 - Selection Sort

邹正霖

2020-10-25

我想不传入数组长度,直接在函数里计算,用了以下代码计算

int len = sizeof(arr) / sizeof(arr[0]);

结果是错误的,这是为什么?
能否解答下,谢谢。

写回答

1回答

liuyubobobo

2020-10-26

不正确,因为 arr 作为函数的参数,就是一个指针,所以 sizeof(arr) 就是这个指针的大小,而不是这个指针指向的空间大小。


传入数组同时传入长度是标准的 C 语言的处理方式;如果想使用 C++ 的方式,应该使用 vector 类,但本质其实也是将长度这一信息放在了 vector 类中,打包传给了函数。


继续加油!:)

1
2
liuyubobobo
回复
邹正霖
可以。
2020-10-30
共2条回复

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程