c++中如何求数组长度
在c++中求一个数组的长度(比如整形), 我刚开始想这么做
int array1[5];
int count = sizeof(array1)/sizeof(int);
这样写是可以得出结果得, 但是如果我把这个数组传递给一个函数
void test(int array1[]){
int count = sizeof(array1)/sizeof(int);
}
在函数里面求得的值就是1, 也就是说在函数里面数组当作指针来处理了, 不知道这问题怎么解决, 有什么方法可以方便的求出数组的长度么
问题点数:20、回复次数:9Top
1 楼dx30611(mao)回复于 2005-12-22 18:51:45 得分 0
#include<iostream.h>
void test(int array1[])
{
//int count = sizeof(array1[])/sizeof(int);
//cout<<count<<endl;
cout<<array1[6];
}
int main()
{
int a[5]={1,2,3,4,5};
test(a);
}
不可能判断
我给你写了一个测试程序,即使发生了数组越界
程序还会正常的执行下去,这个函数根本不可能判断数组大小
它只能按照指针+i去寻找数Top
2 楼dx30611(mao)回复于 2005-12-22 18:55:30 得分 8
如果是string类型的就好办,可以根据是否为空来判断长度
int不行Top
3 楼Rick_ang(东方未名)回复于 2005-12-22 19:08:07 得分 2
把数组做个包装,加个iterator吧...麻烦点..Top
4 楼goodluckyxl(被人遗忘的狗)回复于 2005-12-22 19:49:04 得分 5
不好算 因为数组不会重新完全拷贝副本传入
只会引如数据地址和类型 所以没有办法的Top
5 楼zcz0918()回复于 2005-12-22 20:00:59 得分 5
如果你用的VC,并且用了_DEBUG,并且这个数组没有初始化,可以判断是不是0xcccccccc,呵呵Top
6 楼useresu(俗人)(灌水是我无言的抗议)回复于 2005-12-22 20:30:51 得分 0
楼上的强
Top
7 楼Bible_Chou(日子在发霉)回复于 2005-12-22 20:50:25 得分 0
没有办法判断的。
只能用参数给出大小。Top
8 楼YuriOU()回复于 2005-12-22 20:56:11 得分 0
无论何时,将数组作为参数传给函数,实际上只是把数组的地址传给函数Top
9 楼YuriOU()回复于 2005-12-22 20:57:23 得分 0
传递给自定义函数,需传递一个数组参数和数组大小参数。Top