c++中如何求数组长度

楼主yul26(yul)2005-12-22 17:58:50 在 C/C++ / 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

你可能对以下的问题也比较感兴趣....