+ -
当前位置:首页 → 问答吧 → 这个是什么意思?

这个是什么意思?

时间:2011-12-12

来源:互联网

BOOL AFXAPI AfxParseURL(LPCTSTR pstrURL,DWORD& dwServiceType,CString& strServer,CString& strObject,INTERNET_PORT& nPort); 

其中DWORD&是引用的意思吗?为什么不是指针(DWORD*)的形式?下面的代码为什么是用DWORD传值到AfxParseURL函数中而不是引用呢?

C/C++ code

bool PostContent(CString strUrl, const CString &strPara, CString &strContent, CString &strDescript)
{
    try{

        strDescript = "提交成功完成!";
        bool bRet = false;
        CString strServer, strObject, strHeader, strRet;
        unsigned short nPort;
        DWORD dwServiceType;
        if(!AfxParseURL(strUrl, dwServiceType, strServer, strObject, nPort))
        {
            strDescript = strUrl + "不是有效有网络地址!";
            return false;
        }
        CInternetSession sess;//Create session

        CHttpFile* pFile;

作者: woxuevc2009   发布时间: 2011-12-12

是的,是引用,某一变量的别名,函数中对该参数的修改会影响你的实参

作者: VisualEleven   发布时间: 2011-12-12

要是允许修改值,用&比较直接,可以理解为是哪个变量的别名;在此方面指针就...阿

作者: lgstudyvc   发布时间: 2011-12-12

引用 2 楼 lgstudyvc 的回复:
要是允许修改值,用&比较直接,可以理解为是哪个变量的别名;在此方面指针就...阿


引用和指针在汇编代码级别有什么区别呢?

作者: woxuevc2009   发布时间: 2011-12-12

我在网上还真的找到一遍文章!

通过汇编代码看引用和指针的区别 

C/C++ code

 int main(int argc, char* argv[])
{
 int data = 10;
 int &rData = data;
 int *pData = &data;

 int addr;
 addr = (int)&rData;
 addr = (int)&pData;

 return 0;
}

 

汇编代码

_data$ = -4
_rData$ = -8
_pData$ = -12
_addr$ = -16
_main PROC NEAR     ; COMDAT
; Line 15
 push ebp
 mov ebp, esp
 sub esp, 80     ; 00000050H
 push ebx
 push esi
 push edi
 lea edi, DWORD PTR [ebp-80]
 mov ecx, 20     ; 00000014H
 mov eax, -858993460    ; ccccccccH
 rep stosd


; Line 18 int data = 10;
 mov DWORD PTR _data$[ebp], 10  ; 0000000aH  ;

 Line 19  int &rData = data;
 lea eax, DWORD PTR _data$[ebp]        
 mov DWORD PTR _rData$[ebp], eax

//引用变量存储data的地址


; Line 20   int *pData = &data;
 lea ecx, DWORD PTR _data$[ebp]
 mov DWORD PTR _pData$[ebp], ecx

//指针变量也是存储data的地址


; Line 23  addr = (int)&rData;
 mov edx, DWORD PTR _rData$[ebp]
 mov DWORD PTR _addr$[ebp], edx

//取引用地址实际取的是data的地址


; Line 24  addr = (int)&pData;
 lea eax, DWORD PTR _pData$[ebp]
 mov DWORD PTR _addr$[ebp], eax

//取指针的地址取的是指针变量的地址

 

结论,引用和指针变量虽然使用方法不同,但实际存储的内容相同,即指向变量(data)的地址。不同的是引用随即变为其所指变量的一个“影子”,就连该引用变量的地址 &rData 都和其所指变量的地址 &data 相同。


作者: woxuevc2009   发布时间: 2011-12-12

是引用,调用传的也是引用

作者: yayafu   发布时间: 2011-12-12

热门下载

更多