C FAQからの回答:
Prime 50シリーズは、少なくともPL / Iに対して、セグメント07777、オフセット0をヌルポインターに使用しました。後のモデルでは、セグメント0、オフセット0をCのnullポインターに使用し、TCNP(Test C Null Pointer)などの新しい命令を必要としました。古いワードアドレスのPrimeマシンは、ワードポインタ(int *)よりも大きなバイトポインタ(char *)を必要とすることでも有名でした。
DataGeneralのEclipseMVシリーズには、アーキテクチャでサポートされている3つのポインター形式(ワード、バイト、およびビットポインター)があり、そのうち2つはCコンパイラーによって使用されます。char*およびvoid *のバイトポインターと、その他すべてのワードポインターです。32ビットMVラインが16ビットNovaラインから進化した歴史的な理由から、ワードポインターとバイトポインターには、ワード内のさまざまな場所にオフセット、間接、およびリング保護ビットがありました。不一致のポインタ形式を関数に渡すと、保護違反が発生しました。最終的に、MV Cコンパイラは、ポインタ型の不一致エラーが発生したコードを処理するために、多くの互換性オプションを追加しました。
一部のHoneywell-Bullメインフレームは、(内部)nullポインターにビットパターン06000を使用します。
CDC Cyber 180シリーズには、リング、セグメント、およびオフセットで構成される48ビットのポインターがあります。ほとんどのユーザー(リング11)には、0xB00000000000のnullポインターがあります。古いCDC補数マシンでは、無効なアドレスを含むすべての種類のデータの特別なフラグとしてオール1ビットワードを使用するのが一般的でした。
古いHP3000シリーズは、バイトアドレスとワードアドレスで異なるアドレス指定スキームを使用しています。したがって、上記のいくつかのマシンと同様に、char*およびvoid*ポインターには、他のポインターとは異なる表現が使用されます。
タグ付きアーキテクチャであるSymbolicsLispMachineには、従来の数値ポインタすらありません。ペア(基本的には存在しないハンドル)をCnullポインターとして使用します。
使用している「メモリモデル」に応じて、8086ファミリプロセッサ(PC互換)は16ビットデータポインタと32ビット関数ポインタを使用する場合があります。
一部の64ビットCrayマシンは、単語の下位48ビットでint*を表します。char *はさらに、上位16ビットの一部を使用して、ワード内のバイトアドレスを示します。
追加のリンク:これらのマシンのいくつかについての詳細が記載されたChrisTorekからのメッセージ。