{
  //长度不确定
  CString cs[] = {"A","B","C","D","E","F","G","H","I"};
}
void Fun(CString cs[])
{
  //如何在这里得到CS的长度?
  int i = sizeof(cs);
  //这里i总是等于4
  //请问除了从参数里传递长度给这个函数知道,还有其他的办法吗?
}

解决方案 »

  1.   

    {
      //长度不确定
      CString cs[] = {"A","B","C","D","E","F","G","H","I"};
      Fun(cs);
    }
    少写了句,不好意思!
      

  2.   

    void Fun(CString cs[])
    {
      int i = sizeof(cs); //因为参数是数组,所以cs是个地址,也就是指针,所以sizeof(cs)总是4
      //请问除了从参数里传递长度给这个函数知道,还有其他的办法吗?
      //一般用数组作参数的,都要把数组长度也作为参数传进来的
    }
      

  3.   

    一个是楼上说的把参数作为长度传进去另外可以用VECTOR
      

  4.   

    一个是楼上说的把参数作为长度传进去另外可以用CArray
      

  5.   

    CString cs[] = {"A","B","C","D","E","F","G","H","I"};
    int i = sizeof(cs)/sizeof(cs[0]);
    可以得到数组的个数。
    但是调用函数来求就肯定不行,因为函数中得到的是一个指针,sizeof不能计算指针所指向的内存区域大小,sizeof(指针)一定为4,4字节是指针变量的大小。
      

  6.   

    CString cs[] = {"A","B","C","D","E","F","G","H","I"};int i = sizeof(cs)/sizeof(cs[0]);这样调用是可以得到长度的
      

  7.   

    //请问除了从参数里传递长度给这个函数知道,还有其他的办法吗?
      //一般用数组作参数的,都要把数组长度也作为参数传进来的
    --------------------------------------------------------------------
    好像没有,new的好像可以直接查地址前面一个字节,建议你传长度