复制指针值C++
我有一个无符号的C++字符缓冲区复制指针值C++
unsigned char* pBuffer = new unsigned char [1024];
我想通过使用assignement而不是memcpy-即保存在新分配的缓冲区的前几个字节的pBuffer
指针
*(unsigned char*) &pBuffer[0] = pBuffer;
我无法获得sytax权利。用正确的语法来赞赏帮助。
Visual Studio 2010中
我不知道你为什么会想这样做,但我不能想到几个古怪的原因,所以:
reinterpret_cast<unsigned char**>(pBuffer)[0] = pBuffer;
您希望编译器重新诠释指针作为unsigned char**
,并存储值10在0-索引插槽中。
你说你是一个索引“链表”多pbuffer而使。在这种情况下,您不应使用 reinterpret_cast。相反:
struct node {
node* prev;
std::unique_ptr<node> next;
unsigned char buffer[1024];
node(node* prev_) : prev(prev_) {}
};
std::unique_ptr<node> list(new node(nullptr)); //tada
工作,谢谢。我正在尝试使用多个pBuffers制作一个自定义的“链接列表”。 – user85917 2012-03-13 17:11:26
@ user85917:这是_not_使用'reinterpret_cast'的情况之一。我添加了更多信息给我的答案。 – 2012-03-13 17:17:37
不知道你为什么这样做,但这个工程我g++
编译:
*(unsigned char**)pBuffer=pBuffer;
如何:
*((unsigned char**) pBuffer) = pBuffer;
它施放pBuffer
指针的指针的指针为char,然后取消引用,要使它成为一个指针,然后分配一个char pBuffer
指针。
,如果我们把它写这样可能更容易理解:
unsigned char **ppBuffer = &pBuffer;
*ppBuffer = pbuffer;
使用std ::向量>。 – AlexTheo 2012-03-13 17:02:53
您正在使用哪种编译器? – iammilind 2012-03-13 17:03:44