问题内容:初始化(清0)数组的函数
原讨论链接:http://community.csdn.net/expert/topicview1.asp?id=1799237
所属论坛:Windows SDK/API 审核组:C++ Builder
提问者:pspice 解决者:SharpKing515
感谢:wgh166、nightfallrove、jishiping、chifengwatch、GodBirdFlying、SharpKing515
关键字:
答案:
记得以前在哪看到过几个初始化数组的函数,可当时记下来,请大家帮帮忙。 它的做用相当于把每个数组元素付0值,像memset(...)那样的。 谢谢!!!
---------------------------------------------------------------
int a[10][50];
memset(a, 0, sizeof(a)); ---------------------------------------------------------------
char a[125]; memset(a,0,125); 第一个参数是要清0的数组,第二个参数是你 要设置的值,比如你可以把一个数组全部设为1 memeset(a,1,125); 最后一个参数是数组长度,以字节为单位。。。 ---------------------------------------------------------------
要看你的数组类型了。如果数组的每个成员是一个class或者struct,而且他们的成员变量 包含class或者struct变量,可能就不能用memset来赋初始值了。比如: struct TestStruct { int num; char buf[16]; AnsiString Name; };
TestStruct ArrayTS[10]; 此时就不能用 memset(ArrayTS, 0, sizeof(ArrayTS)); ---------------------------------------------------------------
同意楼上所有,如果不嫌累,写个循环也可以。:) for(...){x[i]=0;} ---------------------------------------------------------------
很多情况下,偶都是在使用前将其清空的 ---------------------------------------------------------------
VOID ZeroMemory(
PVOID Destination, // address of block to fill with zeros DWORD Length // size, in bytes, of block to fill with zeros ) //--------- VOID FillMemory (
PVOID Destination, // pointer to block to fill DWORD Length, // size, in bytes, of block to fill BYTE Fill // the byte value with which to fill ); 这个应该也可以吧???!!
|