2

这让我很烦,但我想避免只使用 memcpy 的明显解决方案。

struct Person
{
    //Some variables
};

void doSomething(char* pointerToSomeone)
{
    struct Person bob;

    //Assign pointerToSomeone to bob, somehow...
}

在上面,pointerToSomeone 是一个指向 Person 结构的指针。我如何将它分配给鲍勃?肯定有可能吗?

我已经尝试了许多我认为是明智的演员表、尊重等但没有成功(编译器错误)。

4

4 回答 4

3

您不能分配指向 a 的指针charstruct但可以将指向的内容复制char*到 astruct中,如下所示:

memcpy(&bob, pointerToSomeone, sizeof(struct Person));

pointerToSomeone无类型的情况下,更常见的是使用void*而不是char*.

于 2013-04-23T11:50:33.223 回答
2

你不能。但是,如果您确定pointerToSomeone确实是指向 a 的指针,Person那么您可以创建bob一个指针并使用类型转换:

struct Person *bob = (struct Person *) pointerToSomeone;
于 2013-04-23T11:49:36.177 回答
1

你可以简单地这样做(假设它是一个有效的演员表):

struct Person bob = *((struct Person*) pointerToSomeone);

请注意,您正在复制指针的堆栈,而不是像这样引用它:

struct Person* bob = (struct Person*) pointerToSomeone;
于 2013-04-23T12:03:35.060 回答
0

您只需将指向的结构复制pointerToSomeonebobwith memcpy,只需确保 pointerToSomeone 确实是指向结构 Person 的指针

void doSomething(char* pointerToSomeone)
{
    struct Person bob;

    memcpy( &bob , pointerToSomeone , sizeof( struct Person ) ) ;

}
于 2013-04-23T11:51:04.150 回答