c/c++:数组作为参数,长度传不过去,必须另外弄个参数,好麻烦啊!!!!

 我来答
yuantailing
2014-01-20 · TA获得超过2545个赞
知道小有建树答主
回答量:1167
采纳率:92%
帮助的人:655万
展开全部

是这样的,传数组相当于传指向数组首元素的指针,丢失了长度信息。

但这种麻烦也是有好处的:如果你真的不需要这个长度,那么提高了时间和空间效率。


你也可以用STL库(几乎所有C++编译器里都有)里封装的vector模板类,这样数组长度等信息都传进去了。如何用vector——你可以试一下这个示例代码

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

void f(vector<int> v) {
    cout << "v.size() = " << v.size() << endl;
    for (int i = 0; i < v.size(); i++) {
        cout << "v[" << i << "] = " << v[i] << endl;
    }
}

int main() {
    vector<int> v;
    v.clear();
    v.push_back(5);
    v.push_back(6);
    v.push_back(10);
    f(v);
    return 0;
}
风若远去何人留
2014-01-20 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450126
专业C/C++软件开发

向TA提问 私信TA
展开全部
设计数组的时候 可以多申请一位 然后把数组第0个单位里面存成数组长度
不过对于char float等类型会有些麻烦 对于整型数组很好用
对于char float等 可以约定前若干字节(比如前四个)用于存储size
对于double可以约定前8个字节
或者用结构体 把长度独立出来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
吾守护奇迹
2014-01-20 · TA获得超过202个赞
知道小有建树答主
回答量:237
采纳率:66%
帮助的人:155万
展开全部
只是加一个参数,有那么麻烦么。。不然你就弄个结构体,包含数组和长度,感觉这样跟麻烦一点吧。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
XY_WLL
2014-01-20 · TA获得超过139个赞
知道小有建树答主
回答量:118
采纳率:100%
帮助的人:114万
展开全部
因为数组作为参数的时候,编译器传的是数组的首个元素的地址,所以没办法知道什么时候是数组的结束。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sky28_sky28
2014-01-20 · TA获得超过404个赞
知道小有建树答主
回答量:299
采纳率:0%
帮助的人:241万
展开全部
如果觉得麻烦,可以了解下c++的STL中的vector容器,挺好用的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
相思丶猫2C
2014-01-20 · TA获得超过1198个赞
知道小有建树答主
回答量:1432
采纳率:50%
帮助的人:952万
展开全部
那就不要用数组啊,使用vector
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式