读书人

请问:在 C++ 类中数组如何初始化?

发布时间: 2012-01-18 00:23:26 作者: rapoo

请教:在 C++ 类中,数组怎么初始化?谢谢!
请教:
一个这样的问题:
a.h

class a
{
int FallRedAnimalCount1[12];
float FallRedAnimalY[12];
}

a.cpp

a:A()
{
int a = 0;
for (i = 0; i < 12; i++)
{
FallRedAnimalCount1[i] = 0;
}
for (i = 0; i< 12; i++)
{
FallRedAnimalY[i] = 0.0f;
}
}

是这样初始化的吗?

还有更好的方法吗?

memset(FallRedAnimalCount1, 0, sizeof(FallRedAnimalCount1));
memset(FallRedAnimalY, 0.0f, sizeof(FallRedAnimalY));
这样可以吗?

谢谢!


[解决办法]
memset(FallRedAnimalCount1, 0, sizeof(int)*12);
memset(FallRedAnimalY, 0.0f, sizeof(float)*12);
这样初始化效率高
[解决办法]
a myA;
ZeroMemory(myA, sizeof(myA));
不过其实ZeroMemory也是调用的memset
[解决办法]
//我要把 12 myactive全部初始化为 true

false == 0, 非0 的就是true

memset(myactive, true, sizeof(myactive));
memset(myactive, 1, sizeof(myactive));
这两个效果一样
[解决办法]
楼上正解
false等效于0
true等效于1
memset(bTest,true,sizeof(bool)*10);
memset(bTest,1,sizeof(bool)*10);
均可
可以用下面代码测试
int i;
for(i=0;i<10;i++)
{
if (bTest[i]!=true)
{
MessageBox("bTest!=true","消息",MB_OK);
}
}
也可以用下面代码察看
sprintf(psTemp,"%d",true);
MessageBox(NULL,(LPCTSTR)psTemp,"消息",MB_OK);
sprintf(psTemp,"%d",false);
MessageBox(NULL,(LPCTSTR)psTemp,"消息",MB_OK);
[解决办法]
同意楼上的
memset(bTest,true,sizeof(bool)*10);
memset(bTest,1,sizeof(bool)*10);
两者均可

读书人网 >VC/MFC

热点推荐