我有这样一个字符数组, 有什么办法能得到它的元素个数??
const TCHAR * BANK_LEVEL[] = 
{
_T("支行"),
_T("二级分行"),
_T("省分行")

};我要得到的是元素个数3. 有没有办法得到??

解决方案 »

  1.   

    int nCount = sizeof(BANK_LEVEL)/sizeof(TCHAR*);
      

  2.   

    error C2070: illegal sizeof operandsiziof用法错了!
      

  3.   

    const TCHAR * BANK_LEVEL[] = 
    {
    _T("支行"),
    _T("二级分行"),
    _T("省分行")

    };int CLevel::FindLevel(LPCTSTR lpLevel)
    {
    int nSize = sizeof(BANK_LEVEL) / sizeof(TCHAR *);
    for (int nIndex = 0; nIndex < nSize; nIndex++)
    {
    if (!strcmp(BANK_LEVEL[nIndex],lpLevel))
    return nIndex;
    } return -1;
    }error C2070: illegal sizeof operand 错误定位int nSize = sizeof(BANK_LEVEL) / sizeof(TCHAR *);
      

  4.   


    确实,你加了无用的空格,我自己都编译出来试验过的
    int nCount = sizeof(BANK_LEVEL)/sizeof(TCHAR*)
      

  5.   

    很奇怪的问题...
    const TCHAR * BANK_LEVEL[] = 
    {
        _T("支行"),
        _T("二级分行"),
        _T("省分行")
            
    };
    是在其它类里定义的. 在这个类里声明了下
    extern const TCHAR * BANK_LEVEL[];
    正常使用都没有问题.如果将这个数组放到这个类来sizeof就没有问题.. 编译器的BUG?如何解决??(BANK_LEVEL不能动)
      

  6.   

    声明:  不是sizeof(TCHAR *);的问题!int nSize = sizeof(TCHAR *);
    编译运行正确
      

  7.   

    一楼的是错误的,int nCount = sizeof(BANK_LEVEL)/sizeof(*BANK_LEVEL);是正解
      

  8.   

    TCHAR * BANK_LEVEL[]只是定义了一个指针数组
    所以要用:int nCount = sizeof(BANK_LEVEL)/sizeof(TCHAR *); 
      

  9.   

    知道问题的原因了. 
    在其它类里定义这个指针数组, 在这个类里用时, 必须加上声明
    问题出在声明上
    extern const TCHAR * BANK_LEVEL[];
    声明的是一个不定长的指针数组, 编译器无法知道声明的指针数组是哪一个.
    改成
    extern const TCHAR * BANK_LEVEL[3];
    就没有问题, 但是如果指针数组大小改了后,这个声明这里也必须要改..
    高手有没有更好的声明??
      

  10.   

    另定义一个变量表示长度,或者在数组最后用NULL表示结束,通过查找NULL确定长度:
    const TCHAR * BANK_LEVEL[] = 

    _T("支行"),
    _T("二级分行"),
    _T("省分行"),
    NULL
    };
      

  11.   


    你提出问题的时候,是以枚举的方式来声明的,当然没问题。
    如果是数组声明的话,必须声明数组的大小,不然编译不过。这是当时学习数组的时候就提及的。
    如果是new出来的话,需要声明指针的指针
      

  12.   

    好方法..
      cnzdgs分数马上要超过蒋委员长了.我看好你哦!
    恩, 是我的疏忽,...基础不扎实!多谢