这个让我烦恼,但我想避免使用memcpy的明显解决方案。
struct Person
{
//Some variables
};
void doSomething(char* pointerToSomeone)
{
struct Person bob;
//Assign pointerToSomeone to bob, somehow...
}
在上面,pointerToSomeone是指向Person结构的指针。 如何将其分配给bob?当然有可能吗?
我已经尝试了许多我认为合理的演员,差异等等而没有成功(编译错误)。
答案 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;