0

gccで次のことが許可されているのはなぜですか?

void **p1, **p2;

p1=*p2;

しかし、これは「互換性のないポインタ型からの割り当て」エラーを生成しますか?

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

2 に答える 2

3

は、ジェネリック (データ) ポインター型*p2である typevoid *であるためです。つまり、任意のデータ ポインター型を type のポインターに割り当てることができ、任意の型のデータ ポインターに a を割り当てることもできます。そうvoid *void *

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

有効です。

ただし、char **char *は異なる型へのポインターであり、どちらも では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**が割り当てられている間に機能する理由void*は、void ポインターが任意のものを指すことができるためです。

于 2013-03-05T06:53:27.190 に答える