请问这段是什么意思啊?
//函数功能:获取驱动器
void CTreeViewDlg::GetLogicalDrives(HTREEITEM hParent)
{
    size_t szAllDriveStrings = GetLogicalDriveStrings(0,NULL);//驱动器所需空间
char *pDriveStrings = new char[szAllDriveStrings + sizeof(_T(""))];//特别是这句话,本人是新手,请大家多帮帮忙,谢谢了!!!!
GetLogicalDriveStrings(szAllDriveStrings,pDriveStrings);
size_t szDriveString = strlen(pDriveStrings);
while(szDriveString > 0)//"C:\<NULL>D:\<NULL>E:\<NULL><NULL>"
{
m_tree.InsertItem(pDriveStrings,hParent);
pDriveStrings += szDriveString +1;//特别是这句话,本人是新手,请大家多帮帮忙,谢谢了!!!!
szDriveString = strlen(pDriveStrings);
}
}

解决方案 »

  1.   

    char   *pDriveStrings   =   new   char[szAllDriveStrings   +   sizeof(_T(""))];//特别是这句话,本人是新手,请大家多帮帮忙,谢谢了!!!! 这个是分配内存,用于存放驱动器的名字pDriveStrings   +=   szDriveString   +1;//特别是这句话,本人是新手,请大家多帮帮忙,谢谢了!!!! 这个是指针后移,找到下一个驱动器的名字
      

  2.   

    谢谢楼上的回答,谢谢!
    我知道这两句话的整体作用,但是我不知道的是这两句话中的细节问题,即:
    char       *pDriveStrings       =       new       char[szAllDriveStrings       +       sizeof(_T(""));
    这句话中,为什么在分配内存大小的时候要加上sizeof(_T(""))啊?它的作用是什么呢,直接分配szAllDriveStrings 不就可以了吗?
    pDriveStrings       +=       szDriveString       +1;//特别是这句话,本人是新手,请大家多帮帮忙,谢谢了!!!!   这句话的指针移动过程我不是很明白,也就是szDriveString +1即跨过NULL,然后到达下一个盘符所到的位置,然后加上这么大的偏移量,然后将此时的字串中的值前移,覆盖掉前一个的盘符,是这样的吗?谢谢大家了,本人是新手,所以可能问的比较肤浅,但是还是请大家帮帮忙,谢谢!