首页上一页 1 下一页尾页 1 条记录 1/1页
《Visual C++开发实战宝典》例17.8文件发送客户端
发表在C语言图书答疑
2011-02-16
是否精华
是
否
版块置顶:
是
否
class CDataPackage
{
public:
DataPackage m_Type; //数据包类型
SendCmd m_Cmd; //文件发送命令
DWORD m_dwSize; //数据报结构大小
DWORD m_dwFileSize; //整个文件大小
DWORD m_dwData; //m_Data的大小
BYTE m_Data[]; //数据缓冲区
};
在void CSendFileClientDlg::RecvFile(CDataPackage *pPackage)函数中有:
if (pPackage != NULL)
{
if (pPackage->m_Type == DP_FILE) //只处理文件数据
{
static CFile file;
if (pPackage->m_Cmd == SC_BEGIN) //开始发送
{
//读取文件名
char szFileName[128] = {0};
memcpy(szFileName, pPackage->m_Data, 128);
我想在memcpy(szFileName, pPackage->m_Data, 128)这条语句中pPackage->m_Data应该是指向存储文件名的首地址,可是为什么它是指向文件名的首地址呢?从来没有把首地址赋值给m_Data,在例17.7与例17.8中都没有为m_Data赋值啊?他们的存储顺序应该是CDataPackage(m_Type,m_Cmd,m_dwSize,m_dwFileSize,m_dwData,m_Data[])->文件名->文件数据,为什么m_Data会指向文件名的首地址?为什么不指向其他地址呢?
{
public:
DataPackage m_Type; //数据包类型
SendCmd m_Cmd; //文件发送命令
DWORD m_dwSize; //数据报结构大小
DWORD m_dwFileSize; //整个文件大小
DWORD m_dwData; //m_Data的大小
BYTE m_Data[]; //数据缓冲区
};
在void CSendFileClientDlg::RecvFile(CDataPackage *pPackage)函数中有:
if (pPackage != NULL)
{
if (pPackage->m_Type == DP_FILE) //只处理文件数据
{
static CFile file;
if (pPackage->m_Cmd == SC_BEGIN) //开始发送
{
//读取文件名
char szFileName[128] = {0};
memcpy(szFileName, pPackage->m_Data, 128);
我想在memcpy(szFileName, pPackage->m_Data, 128)这条语句中pPackage->m_Data应该是指向存储文件名的首地址,可是为什么它是指向文件名的首地址呢?从来没有把首地址赋值给m_Data,在例17.7与例17.8中都没有为m_Data赋值啊?他们的存储顺序应该是CDataPackage(m_Type,m_Cmd,m_dwSize,m_dwFileSize,m_dwData,m_Data[])->文件名->文件数据,为什么m_Data会指向文件名的首地址?为什么不指向其他地址呢?