复制指针值c ++

时间:2012-03-13 16:59:53

标签: c++ buffer variable-assignment arrays

我有一个无符号的c ++ char缓冲区

unsigned char* pBuffer =  new unsigned char [1024];

我想通过使用assignement而不是memcpy来保存新分配的缓冲区的前几个字节中的pBuffer指针,即

*(unsigned char*) &pBuffer[0] = pBuffer;

我无法使sytax正确。感谢帮助正确的语法来做到这一点。

Visual Studio 2010

3 个答案:

答案 0 :(得分:3)

我不知道你为什么要这样做,但我可以想到一些奇怪的原因,所以:

reinterpret_cast<unsigned char**>(pBuffer)[0] = pBuffer;

您希望编译器将指针重新解释为unsigned char**,并将pBuffer的值存储在0索引槽中。

您说您正在使用多个pBuffers索引“链接列表”。在这种情况下,您不应使用 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

答案 1 :(得分:1)

怎么样:

*((unsigned char**) pBuffer) = pBuffer;

它将pBuffer指针强制转换为指向char的指针,然后取消引用它,使其成为指向char的指针,然后为其分配pBuffer指针。

如果我们这样写它可能会更容易理解:

unsigned char **ppBuffer = &pBuffer;
*ppBuffer = pbuffer;

答案 2 :(得分:0)

不确定为什么要这样做,但这适用于我的g++编译器:

*(unsigned char**)pBuffer=pBuffer;