VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 527|回复: 8

如何获得作为形参传入函数的数组的长度?

[复制链接]
13_avatar_middle
最佳答案
0 
online_vip 发表于 2019-2-26 22:02:08 | 显示全部楼层 |阅读模式
3驿站币
当数组作为形参传入函数时,我们知道传入的其实是数组的首地址,但请问:
1:此时在函数内,如果不通过形参传入数组的长度,我们有什么办法可以求得数组的长度?
2:如果不易求得数组的长度,在函数中如何遍历数组的数值?

例如:

int get_len(int a[])
{
        //实现部分
        //这里如何实现?
        //
}

int main()

        int a[10] = {0,1,2,3,4,5,6,7,8,9};
        int b = get_len(a);





上一篇:【伸手】求一个Windbg的安装包(网上下了好几个垃圾软件)
下一篇:WNDCLASS数据类型求解
81_avatar_middle
最佳答案
3 
online_supermod 发表于 2019-2-26 22:09:08 | 显示全部楼层
这个。。。如果是非字符串的话,貌似只能通过参数把数组的长度传进去吧,据我所知是这样
58_avatar_middle
最佳答案
43 
online_vip 发表于 2019-2-26 23:34:46 | 显示全部楼层
你的数据又不是以零结尾,又不肯去传入数组大小,好像很难吧?
75_avatar_middle
最佳答案
0 
在线会员 发表于 2019-2-26 23:49:22 | 显示全部楼层
全局数组 哈哈  没有其他办法了  。
像C++的vector等数组 其实是类的对象  他们自带求长度的方法  
你也可以模仿写一个数组类  包含求长度的方法 哈哈   
88_avatar_middle
最佳答案
0 
online_vip 发表于 2019-2-27 14:54:07 | 显示全部楼层
传递数组的引用就可以了

评分

参与人数 2驿站币 +2 收起 理由
58_avatar_small thzzl + 1
75_avatar_small coldBro + 1 赞一个!

查看全部评分

75_avatar_middle
最佳答案
0 
在线会员 发表于 2019-2-28 09:52:52 | 显示全部楼层
wyc2008 发表于 2019-2-27 14:54
传递数组的引用就可以了

我试了下  真的可以
学到了

专门测试了一下长度不同的
编译器报错:error C2664: “Fun”: 不能将参数 1 从“int [5]”转换为“int (&)[10]”
void Fun(int (&buf)[10])
{
        for (int i = 0;i<10;i++)
        {
                buf = 1;
        }
}

int main()
{
        int c[5]={0};
        Fun(c);
        return 0;
}
75_avatar_middle
最佳答案
0 
在线会员 发表于 2019-2-28 12:05:28 | 显示全部楼层
template<typename T,int N>
int GetBufLen(T (&buf)[N])
{
        return N;
}

int main()
{
        int c[5]={0};
        int i = GetBufLen(c);
        int b[10]= {0};
        int j = GetBufLen(b);
        return 0;
}
88_avatar_middle
最佳答案
0 
online_vip 发表于 2019-3-1 09:13:24 | 显示全部楼层
coldBro 发表于 2019-2-28 09:52
我试了下  真的可以
学到了

可以了 还不把分给我
75_avatar_middle
最佳答案
0 
在线会员 发表于 2019-3-1 09:40:12 | 显示全部楼层
wyc2008 发表于 2019-3-1 09:13
可以了 还不把分给我

我又不是楼主如何获得作为形参传入函数的数组的长度?
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-9-19 22:41

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表