質問: 詳説Cポインタの中に > > voidへのポインタは他のポインタに等しくなることはありません。(voidポインタの振る舞いは、システムに依存します)。ただし、2つのvoidへのポインタがともにnullポインタであるとき、それらは等しいとみなされます。 > > > という記述があったのですが、voidポインタが他のポインタと等しくならないとはどういう点において等しくないのでしょうか?
回答: いまさらなんですが、 オライリーの「詳説 Cポインタ(Understanding and Using C Pointers : Richard Reese)」の英文に以下のような部分があります。 カッコ内はGooglによる自動翻訳をプログラマ向けに少し手直ししたものです。 > > /////引用(翻訳)開始 > > > Pointer to void (voidへのポインタ) > > > A pointer to void is a general-purpose pointer used to hold references > > to any data type. An example of a pointer to void is shown below: > > (voidへのポインタは、あらゆるデータ型への参照を保持するために使用される汎用ポインタです。) > > (voidへのポインタの例を以下に示します。) > > > void *pv; > > > It has two interesting properties: (これらには、2つの興味深い特性があります。) > > > ・ A pointer to void will have the same representation and memory alignment as a pointer to char. > > (・voidへのポインタは、charへのポインタと同じ表現とメモリアライメントを持ちます。) > > > ・ A pointer to void will never be equal to another pointer. However, two void pointers assigned a NULL value will be equal. > > (★)(・voidへのポインタが他のポインタと同じになることはありません。ただし、NULL値が割り当てられた2つのvoidポインタは等しくなります。) > > /////以上で引用終了 > > > (★)を付けた部分では確かに等しくならないという翻訳になってしまいます。 ですが、それに続く内容では同じに扱える性質と同じに扱えない性質を説明しているため、 もう少し注意深く意訳すべきだったかもしれません。例えば、 訳例1(voidへのポインタは、他のポインタと同じとみなしてはいけません。) 訳例2(voidへのポインタは、他のポインタと同じ様に扱うことはできません。) などでしょうか。この様な感じであれば誤解されづらいと言えます。