C/C++ では関数ポインタとデータポインタに互換性がないのはなぜですか? 質問する

C/C++ では関数ポインタとデータポインタに互換性がないのはなぜですか? 質問する

関数ポインターをデータ ポインターに変換すること、およびその逆の変換はほとんどのプラットフォームで機能しますが、機能することが保証されているわけではないと読みました。なぜそうなるのでしょうか。どちらも単にメイン メモリへのアドレス指定であり、互換性があるはずではないでしょうか。

ベストアンサー1

アーキテクチャでは、コードとデータを同じメモリに格納する必要はありません。ハーバード アーキテクチャでは、コードとデータはまったく別のメモリに格納されます。ほとんどのアーキテクチャは、コードとデータを同じメモリに格納するフォン ノイマン アーキテクチャですが、C は可能な限り、特定の種類のアーキテクチャに限定されません。

おすすめ記事