除了传个长度参数进去还有别的办法吗?


```
#include <iostream>
using namespace std;

void f(int nums[])
{
        cout << sizeof(nums) << endl;
}

int main()
{
        int nums[5] = {1,2,3,4,5};
        f(nums);
        return (0);
}
```
举报· 622 次点击
登录 注册 站外分享
30 条回复  
xuelang 小成 2024-5-11 13:19:21
哈哈,你可以看这篇 C++ 函数可变参实现方法的演进: https://selfboot.cn/2024/05/07/variadic_arguments_in_c++/

模板里可以拿到参数数量的。
yougotme 小成 2024-2-10 14:19:08
没必要简单问题复杂化,加一个大小参数吧,把精力用在能搞钱的地方。
lingxi27 小成 2024-1-29 10:05:07
@greycell 比知乎差得可太远了
greycell 小成 2024-1-29 09:56:50
fshex c++水平不如知乎可还行
araraloren 小成 2024-1-29 09:43:56
@chendl111 There is not need to get length using `get_array_length` in same scope of `nums`. You can just using `sizeof`.
mingl0280 小成 2024-1-29 03:35:40
手动狗头。
你可以在数组前面加个长度嘛,反正就是预留一个 size_t 的位置然后再填数组就好啦,进函数先把头部的长度解出来就行了哈哈哈哈。
Feep 小成 2024-1-28 23:10:42
编译器遇到 形参列表里的 T[] 时会进行隐式转换
参考 https://zh.cppreference.com/w/cpp/language/array
zhuangzhuang1988 小成 2024-1-28 22:56:40
直接上 Span
我在 C#也是用 Span.
用得好, 可以少写很多代码
junkun 小成 2024-1-28 22:48:01
C++20 可以用 std::span 。
Leonooo13 小成 2024-1-28 21:32:03
@rabbbit 指针指向数组,指针可以指向一个地址,一般指向数组的首地址,通过移动遍历地址。
123下一页
返回顶部