别人的程序,其中几行不明白。请问下面2组赋值方法有什么区别?(一个有&,一个没有&)是笔误还是有其它用意?(1)
//new BYTE[ChnNum*CHESTRESPSIMPLEFR/SEGNUMPERSEC]
CapBuffer[bufno][0].pData=ChestRespData[bufno]; // 不明白没有&
//无内存清零函数 // 不明白为什么无内存清零函数
和
(2)//new BYTE
CapBuffer[bufno][1].pData=&RespRate[bufno]; // 不明白有&
ZeroMemory(CapBuffer[bufno][ParamNo].pData,1); // 不明白为什么这里要内存清零函数
其中 数组定义:
BYTE ChestRespData[CAPBUFFNUM][CHESTRESPSIMPLEFR/SEGNUMPERSEC]; 结构体数组定义:
DATAHEADER CapBuffer[CAPBUFFNUM][TOTALCAPPARAM];
typedef struct tagDataHeader
{
WORD wStructLength;
BYTE nDataID;//数据类型: Eeg Ecg Eog
WORD wChnNum;//通道数
WORD wPointNum;//采样点数
DWORD dwDataLength;//数据长度
VOID *pData;//数据指针
} DATAHEADER,*LPDATAHEADER;
//new BYTE[ChnNum*CHESTRESPSIMPLEFR/SEGNUMPERSEC]
CapBuffer[bufno][0].pData=ChestRespData[bufno]; // 不明白没有&
//无内存清零函数 // 不明白为什么无内存清零函数
和
(2)//new BYTE
CapBuffer[bufno][1].pData=&RespRate[bufno]; // 不明白有&
ZeroMemory(CapBuffer[bufno][ParamNo].pData,1); // 不明白为什么这里要内存清零函数
其中 数组定义:
BYTE ChestRespData[CAPBUFFNUM][CHESTRESPSIMPLEFR/SEGNUMPERSEC]; 结构体数组定义:
DATAHEADER CapBuffer[CAPBUFFNUM][TOTALCAPPARAM];
typedef struct tagDataHeader
{
WORD wStructLength;
BYTE nDataID;//数据类型: Eeg Ecg Eog
WORD wChnNum;//通道数
WORD wPointNum;//采样点数
DWORD dwDataLength;//数据长度
VOID *pData;//数据指针
} DATAHEADER,*LPDATAHEADER;
有没有清零函数的问题 看具体代码的功能。没法解释
RespRate的定义如下,是1维数组:
BYTE RespRate[CAPBUFFNUM];代码如下,请解释一下为什么有的地方有内存清零函数,有的地方无内存清零函数?if(capparam.ChestRespParam.bCapture)
{
DataRecord.iChestRespPos=ParamNo;
ChnNum=0;
ChnNum++;
CapBuffer[bufno][ParamNo].nDataID=5;
CapBuffer[bufno][ParamNo].wChnNum=ChnNum;
CapBuffer[bufno][ParamNo].wPointNum=0;
CapBuffer[bufno][ParamNo].dwDataLength=0;
CapBuffer[bufno][ParamNo].pData=ChestRespData[bufno];//new BYTE[ChnNum*CHESTRESPSIMPLEFR/SEGNUMPERSEC];
ParamNo++;
DataRecord.iRespRate=ParamNo;
CapBuffer[bufno][ParamNo].nDataID=11;
CapBuffer[bufno][ParamNo].wChnNum=1;
CapBuffer[bufno][ParamNo].wPointNum=1;
CapBuffer[bufno][ParamNo].dwDataLength=1;
CapBuffer[bufno][ParamNo].pData=&RespRate[bufno];//new BYTE;
ZeroMemory(CapBuffer[bufno][ParamNo].pData,1);
ParamNo++;
}
相当于
CapBuffer[bufno][0].pData=&ChestRespData[bufno][0]; RespRate是另外一个一维数组
ZeroMemory(CapBuffer[bufno][ParamNo].pData,1);
相当于把RespRate[bufno]清零
那为什么(1)无内存清零函数?