我将用代码说明我的问题:
#include <iostream>
void PrintInt(const unsigned char*& ptr)
{
    int data = 0;
    ::memcpy(&data, ptr, sizeof(data));
    // advance the pointer reference.
    ptr += sizeof(data);
    std::cout << std::hex << data << " " << std::endl;
}
int main(int, char**)
{
    unsigned char buffer[] = { 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, };
    /* const */ unsigned char* ptr = buffer;
    PrintInt(ptr);  // error C2664: ...
    PrintInt(ptr);  // error C2664: ...    
    return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时(在VS2008中)我得到了这个:错误C2664:'PrintInt':无法将参数1从'unsigned char*'转换为'const unsigned char*&'.如果我取消注释"const"注释它可以正常工作.
但是不应该指针隐式转换成const指针然后引用?期待这个工作我错了吗?谢谢!