みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

「ポインタ」が誕生した経緯について

https://okwave.jp/qa/q9627892.html)の質問内容と重複しますが、「ポインタ」が誕生した経緯について教えてください。なぜ「ポインタ」が誕生したのでしょうか?

おおまかなイメージで言うと「アセンブラで、プログラムを作成すると複雑すぎて、大変だから(一部)ラクにしよう」という考えの元で生まれたのでしょうか?

さらに、「ポインタ」は何の為に使うのか?何のために使わなければならないのか?その目的も教えてください。

よろしくお願いします。

投稿日時 - 2019-06-22 23:57:51

QNo.9628282

すぐに回答ほしいです

質問者が選んだベストアンサー

そうです。最初の Unix は全てアセンブラで書かれていましたが、大変なので (保守性、移植性など) 楽にしようとして C が開発されました。で実際に何の為かと言えば Unix カーネルのメモリの物理アドレスへのアクセスが最たるものじゃないでしょうか。

だからこそ今でもフリーの OS の多くは C, C++ で書かれてますし、ハードウェア制御に組み込み用途でも必須と言っていいですし、逆に現状のメモリが潤沢にある OS 環境下では必須ではないです。

投稿日時 - 2019-06-23 22:15:56

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

今はパソコンでも組込用CPUでもメインメモリが大容量なので大きなデータをコピーしたりしても問題無いでしょうが、昔はメインメモリは非常に小さかったので簡単にデータのコピーなんてできませんし、コピーに掛かる時間も無駄ですから効率的に処理するためには、データの実態を扱うのではなく格納場所のアドレスを扱う方が便利です。
また複数のスレッド(タスク)で一つのデータを共有する場合は、各スレッドはアドレスを知っているだけの方が処理が効率的になります。

投稿日時 - 2019-06-23 07:22:40

ANo.2

OOPの基礎概念
https://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0

アセンブルすると コードが増え 変数やサブプロのアドレスが変わってしまう

それが面倒なので 一か所に辞書テーブルを作り 
そこの値を参照し 実アドレスに アクセスさせた


これがさらに発展されたのが OOP である

すべては相対的に決めることができ
やがては WINDOWS もこの方法で作成され
各プログラムの先頭はハンドルで管理され
必要に応じて HDD(SSD)なの度の記憶媒体から読みだされ 要らなくなったら削除される その空いたスペースには新たなプログラムや メモリーが再配列され 再利用される


ただしこの作業ではオーバヘッド時間が発生するため
本当にチューンナップされたプログラムにはかなわないが

今のように巨大なプログラムの場合 そんなプログラムは人間では組めないと思う

投稿日時 - 2019-06-23 02:24:51

ANo.1

メモリ上のあるデータをアクセスするために、64bitCPUなら8バイト、32bitCPUだと4バイトのアドレスを表すデータが必要ですが、そのデータのことをポインタと言います。
メモリアクセスのためには必須の機能なので、意図的に作ったものでは無いです。

投稿日時 - 2019-06-23 00:32:55

あなたにオススメの質問