这句话在C中的含义是什么?
struct foo *ptr = (struct foo *) p2;
答案 0 :(得分:2)
你没有提供我们需要的所有信息:
struct name *ptr = (Same struct name *) p2;
让它成为可以编译的东西:
struct foo* ptr = (struct foo*) p2;
但现在我们错过了p2
。所以,我将假设p2
是一个普通的C指针,即void*
:
void* p2;
struct foo* ptr = (struct foo*) p2;
所以,您在此处ptr
指定p2
指向的地址。在我的例子中,这是毫无意义的...但如果你分配一些内存:
void* p2 = malloc(sizeof(struct foo));
struct foo* ptr = (struct foo*) p2;
然后p2
具有您分配给ptr
的内存空间的地址。
我在这里给你的例子是通常使用两个变量:
struct foo* ptr = (struct foo*) malloc(sizeof(struct foo));
答案 1 :(得分:2)
从左侧开始:
struct foo *ptr
将ptr
声明为struct foo *
类型,这是指向struct foo
的指针。
=
将ptr
变量初始化为右侧评估的任何变量。
右手边
(struct foo *) p2
是将p2
强制转换为struct foo *
类型的表达式。