获得二维数组的维数? 我有这样一个字符数组, 有什么办法能得到它的元素个数??const TCHAR * BANK_LEVEL[] = { _T("支行"), _T("二级分行"), _T("省分行") };我要得到的是元素个数3. 有没有办法得到?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 int nCount = sizeof(BANK_LEVEL)/sizeof(TCHAR*); error C2070: illegal sizeof operandsiziof用法错了! 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 *); 确实,你加了无用的空格,我自己都编译出来试验过的int nCount = sizeof(BANK_LEVEL)/sizeof(TCHAR*) 很奇怪的问题...const TCHAR * BANK_LEVEL[] = { _T("支行"), _T("二级分行"), _T("省分行") };是在其它类里定义的. 在这个类里声明了下extern const TCHAR * BANK_LEVEL[];正常使用都没有问题.如果将这个数组放到这个类来sizeof就没有问题.. 编译器的BUG?如何解决??(BANK_LEVEL不能动) 声明: 不是sizeof(TCHAR *);的问题!int nSize = sizeof(TCHAR *);编译运行正确 一楼的是错误的,int nCount = sizeof(BANK_LEVEL)/sizeof(*BANK_LEVEL);是正解 TCHAR * BANK_LEVEL[]只是定义了一个指针数组所以要用:int nCount = sizeof(BANK_LEVEL)/sizeof(TCHAR *); 知道问题的原因了. 在其它类里定义这个指针数组, 在这个类里用时, 必须加上声明问题出在声明上extern const TCHAR * BANK_LEVEL[];声明的是一个不定长的指针数组, 编译器无法知道声明的指针数组是哪一个.改成extern const TCHAR * BANK_LEVEL[3];就没有问题, 但是如果指针数组大小改了后,这个声明这里也必须要改..高手有没有更好的声明?? 另定义一个变量表示长度,或者在数组最后用NULL表示结束,通过查找NULL确定长度:const TCHAR * BANK_LEVEL[] = { _T("支行"),_T("二级分行"),_T("省分行"),NULL}; 你提出问题的时候,是以枚举的方式来声明的,当然没问题。如果是数组声明的话,必须声明数组的大小,不然编译不过。这是当时学习数组的时候就提及的。如果是new出来的话,需要声明指针的指针 好方法.. cnzdgs分数马上要超过蒋委员长了.我看好你哦!恩, 是我的疏忽,...基础不扎实!多谢 windows xp树控件显示太慢,如何解决。 有哪位会VC同时会易语言的吗 进来帮个忙!! 菜鸟求教c++的开发工具问题~ 高手请入:找不到成员 listview 如何使若干列合并为一列显示 一个字符数组的小问题,快来检分啊! 视频捕捉问题,高分求救! 菜问:用MFC能否写C/S程序,且用WINDOWS SOCKET而不用csocket,有例程吗? 自画控件 第二次OnPaint后位图消失-_- vs2012 code UI test 报错 一个问题,折腾了我好久好久............... 疑难问题,关于路径
{
_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 *);
确实,你加了无用的空格,我自己都编译出来试验过的
int nCount = sizeof(BANK_LEVEL)/sizeof(TCHAR*)
const TCHAR * BANK_LEVEL[] =
{
_T("支行"),
_T("二级分行"),
_T("省分行")
};
是在其它类里定义的. 在这个类里声明了下
extern const TCHAR * BANK_LEVEL[];
正常使用都没有问题.如果将这个数组放到这个类来sizeof就没有问题.. 编译器的BUG?如何解决??(BANK_LEVEL不能动)
编译运行正确
所以要用:int nCount = sizeof(BANK_LEVEL)/sizeof(TCHAR *);
在其它类里定义这个指针数组, 在这个类里用时, 必须加上声明
问题出在声明上
extern const TCHAR * BANK_LEVEL[];
声明的是一个不定长的指针数组, 编译器无法知道声明的指针数组是哪一个.
改成
extern const TCHAR * BANK_LEVEL[3];
就没有问题, 但是如果指针数组大小改了后,这个声明这里也必须要改..
高手有没有更好的声明??
const TCHAR * BANK_LEVEL[] =
{
_T("支行"),
_T("二级分行"),
_T("省分行"),
NULL
};
你提出问题的时候,是以枚举的方式来声明的,当然没问题。
如果是数组声明的话,必须声明数组的大小,不然编译不过。这是当时学习数组的时候就提及的。
如果是new出来的话,需要声明指针的指针
cnzdgs分数马上要超过蒋委员长了.我看好你哦!
恩, 是我的疏忽,...基础不扎实!多谢