在C中为结构分配一个字节指针

时间:2013-04-23 11:47:44

标签: c pointers reference variable-assignment dereference

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

struct Person
{
    //Some variables
};

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

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

在上面,pointerToSomeone是指向Person结构的指针。 如何将其分配给bob?当然有可能吗?

我已经尝试了许多我认为合理的演员,差异等等而没有成功(编译错误)。

5 个答案:

答案 0 :(得分:3)

您无法将char的指针指定给struct,但您可以将char*指向的内容复制到struct,如下所示:

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

如果pointerToSomeone是无类型的,则更常见的是使用void*代替char*

答案 1 :(得分:2)

你做不到。但是,如果您确定 pointerToSomeone确实是指向Person的指针,那么您可以使bob成为指针并使用类型转换:

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

答案 2 :(得分:1)

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

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

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

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

答案 3 :(得分:0)

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

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

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

}

答案 4 :(得分:0)

使用类型转换

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