なぜポインタという概念が誕生したの?

C言語には「ポインタ」という概念がありますが、そもそもなぜ「ポインタ」という概念が生まれたのですか? 「ポインタ」...

kisinaitui さんからの 回答

  • 2019/06/21 20:57
  • 回答No.4
kisinaitui

ベストアンサー率 32% (6027/18363)

他カテゴリのカテゴリマスター
そんなにポインタが難しいですか?

これが難しいといっていれば、Cは無理かと思いますが。
ストラクチャや、ストラクトタグなんて、壊滅的じゃないでしょうか。

そもそも、ポインタの概念なんか、CPUの基本動作のところから使われているものなのだから、ソフトウエアを組む人なら、当然のように理解しているものだと思いますけどね。

ポインタがないとどうなるのか?より、ポインタがどのように使われているのか?を理解されたほうが早いと思いますよ。
この回答にこう思った!同じようなことあった!感想や体験を書こう!
この回答にはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A
  • ポインタに含まれる情報は [C言語] C・C++・C#

    ポインタに含まれる情報は代入した変数のアドレスですが、アドレス元の変数の大きさは含まれないのでしょうか?ポインタの中の情報を見てみても、参照できる変数が使用しているメモリの先頭アドレスしか入っていません。変数の大きさはどうやって知るのでしょか?回答よろしくお願いします。...

  • C言語のポインタと配列 C・C++・C#

    どうにも理解しようとしていますが全体像が理解できないので、わかっていることわからないことまとめていくのでバンバン指摘してくださるとうれしいです。 1.配列の宣言には int a[]; a[] = {1,2,3}ですが、コンピュータは{"1","2","3"}の部分の数を数えて[]に代入しているので、 int [][3] = {{1,2,3},{4,5,6}}のような配列を作ったとき[][3]の部分の左側の数字も勝手に代入している。 この時なぜ3が勝手に代入されないかがわからない 2.数字とメモリ int s = {1,2,3}をメモリ的に表現すると、123の順に並んでいる。s[1]=2 int s[][2] = {{1,2,3},{4,5,6}}をメモリ的に表現すると123456に並んでいる。s[1][1]= 5 ここまで文字列以外の配列は添え字だけで管理されている。 3.文字列とポインタ char s[] = "abc"とするとメモリ的にはabc\0であり、[]には4が代入され、s[1]はb自身を指す。 char *s = "abc"をメモリで表すとabc\0であり、\0が来るまでを文字列と認識する。 sは&s[0]とも表現できるように、最初のアドレスを指し示している。 char *s[]= {"abc","def"}をメモリ的に表現するとabc\0def\0であり、[]には2がコンピュータにより判断されて代入される。\0までを文字列として表現しようとする。s [1] は"def"の最初のアドレスを指し示すが、s[1][1]とするとe自身を指すようになる。この時、s[1] = &s[1][0]と表現することは可能であると考えられる。 文字列を直接さす場合でも、ポインタで表現する場合でも、\0が要素の最後に来るのでしょうか? また、{{"abc","def"},{"ghi","jkl"}}を文字列で直接表す場合は char s[2][2] = {{"abc","def"},{"ghi","jkl"}}; となるかと思いますが char *s[2][2] = {{"abc","def"},{"ghi","jkl"}}; とするとs[1][1]でghiの最初のアドレスを、s[1][1][0]でg自身を表せるようになるのでしょうか?...

  • ポインタに文字列を代入した場合、メモリはいつ開放されるか。 C・C++・C#

    C言語で、 char *p = "abcd"; の様にポインタに文字列を代入した場合'a','b','c','d','\0'が格納されているメモリ領域はいつ開放されるのでしょうか。 また、このような文字列は、 *(p + 2) = 'f'; というふうに後から一部の値を変更することはできるのでしょうか。 的外れな質問かもしれませんがよろしくお願いします。...

  • C言語のポインタを理解するには C・C++・C#

    今、自分はC言語のポインタを勉強しているのですがメモリの動きなどが想像できません・・・(なんでポインタを使うと速くなるのかなど) 聞いたり調べたところアセンブラをやると理解できるとのことでアセンブラをやろうと思ってるのですが他になにかやるべきことはあるでしょうか? 後コマンドプロンプトとPICは勉強になるでしょうか? 昔のパソコンを使ってるとパソコンがよくわかるみたいなことを聞いたのですが昔のパソコンなんて持ってないのでCUIのコマンドプロンプトを勉強すればなんかわかるかなと思って。 PICは自分で作れば勉強にもなるしそこからなんか得られるかなと思って聞いてみました。 まだパソコンをもって長くないのでいろいろと調べたのですがどうしてもよく理解できないところがあり質問におかしいところがあるかもしれないですがお返事よろしくお願いします。...

  • メモリの初期値 C・C++・C#

    C言語の勉強をしている者です。 やっとこさポインタのところまでやってきまして、いろいろ試しているところなのですが、不可解な事が起こったので質問させてください。 int型の配列を作って、初期化しないままその配列[0]に入っている値を覗くと -858993460 という値が入っていました。 もう一度配列を作り、メモリのアドレスを確認すると、前に作った配列とポインタのアドレスが同じだったので そこに0を入れました。 当たり前ですが配列[0]の値は0でした。 さらにもう一度配列を作り、[0]のアドレスの中身を覗くと -858993460 という値に戻っていました ※配列[0]のアドレスは常に一緒です。 なぜこんな訳のわからない数字( -858993460 )に初期化されているんでしょうか 一度0に初期化したのなら次は0のままになっていると予測していたのですが、どうなっているんでしょうか どなたか理由のわかる方いませんか...

ページ先頭へ