如题所述
初始化方法1
char szFileName[MAXN] ={0}
/**其结果相当于memset(szFileName,0,sizoef(szFileName));
*即对字符串数组中的每个数据都初始化为(ASCII)0即"\0"
**/
初始化方法2
charszFileName[MAXN]="\0" //即在刚开始的位置中加了一个结束符
在C/C++中结构体中使用空数组在一定使用环境下很有好处。
例如:
typedefstruct_NET_DATA3
{
INT32iLength;
BYTEbyType;
BYTEbyReserved;
WORDwStreamId;
DWORDdwChannelId;
DWORDdwParam;
DWORDdwParam1;
BYTEpData[];//空数组,必须放在结构体最后面,否则编译错误。
}NET_DATA3;
unsignedcharbuf[256];
NET_DATA3*pNetData=(NET_DATA3)buf;
此时空数组pData就表示buf中sizeof(NET_DATA3)位置后一个的地址,也就是有一块有效的内存了。
发现sizeof(NET_DATA3)等于20,也就是说pData空数组在结构体中不占空间。
注意:在设计结构体或类时,空数组后面不允许有其他成员变量。
如:ClassAA
{
NET_DATA3m_pdata[];
intm_ref;//此时因为NET_DATA3三中有空数组,而产生编译错误。
//空数组后面是不确定的长度,所以不能够在有其他成员变量。
}
温馨提示:答案为网友推荐,仅供参考