c/c++:数组作为参数,长度传不过去,必须另外弄个参数,好麻烦啊!!!!
7个回答
展开全部
是这样的,传数组相当于传指向数组首元素的指针,丢失了长度信息。
但这种麻烦也是有好处的:如果你真的不需要这个长度,那么提高了时间和空间效率。
你也可以用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;
}
展开全部
设计数组的时候 可以多申请一位 然后把数组第0个单位里面存成数组长度
不过对于char float等类型会有些麻烦 对于整型数组很好用
对于char float等 可以约定前若干字节(比如前四个)用于存储size
对于double可以约定前8个字节
或者用结构体 把长度独立出来
不过对于char float等类型会有些麻烦 对于整型数组很好用
对于char float等 可以约定前若干字节(比如前四个)用于存储size
对于double可以约定前8个字节
或者用结构体 把长度独立出来
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
只是加一个参数,有那么麻烦么。。不然你就弄个结构体,包含数组和长度,感觉这样跟麻烦一点吧。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为数组作为参数的时候,编译器传的是数组的首个元素的地址,所以没办法知道什么时候是数组的结束。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果觉得麻烦,可以了解下c++的STL中的vector容器,挺好用的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那就不要用数组啊,使用vector
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询