0

为什么 gcc 允许以下内容:

void **p1, **p2;

p1=*p2;

但这会产生“来自不兼容指针类型的赋值”错误?

char **p1, **p2;
p1=*p2;
4

2 回答 2

3

因为*p2是 type void *,它是通用(数据)指针类型。这意味着,您可以将任何数据指针类型分配给 type 的指针void *,也可以将 a 分配void *给任何类型的数据指针。所以

(some void **) = (some void *);

已验证。

但是,char **andchar *是指向不同类型的指针,它们都不是void *,所以你不能将一个分配给另一个。

于 2013-03-05T06:52:43.123 回答
0

你需要:

char **p1, **p2;
/* Make sure p2 has a valid value (i.e. points to a valid memory location) before the following statement */
p1=p2;

void**它在被分配 a之间起作用的原因void*是因为 void 指针可以指向任何东西。

于 2013-03-05T06:53:27.190 回答