结构名称* ptr =(相同的结构名称*)p2;

时间:2014-01-28 13:23:08

标签: c pointers structure

这句话在C中的含义是什么?

struct foo *ptr = (struct foo *) p2;

2 个答案:

答案 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 *类型的表达式。