【C言語】初心者向け ポインタはエクセルで説明すると簡単に分かる説【VOICEVOX】【プログラミング】

แชร์
ฝัง
  • เผยแพร่เมื่อ 20 ต.ค. 2024

ความคิดเห็น • 30

  • @tatsunokokendu
    @tatsunokokendu หลายเดือนก่อน +2

    めちゃわかりやすいです。天才

  • @あうら-g2j
    @あうら-g2j 4 หลายเดือนก่อน +19

    ポインタがわかりにくいのではなく、ポインタの書式がわかりにくい、というのもよく言われる話ですね。
    『int* p;(intへのポインタ型の変数p)』と解釈してしまうと、『int* p = &a;』を見た時に「ポインタ型は*なのにポインタ型を作る時は&なのはどういうこと?」となってしまうけれど、
    『int (*p);(*pがint型になるような変数p)』とさえ理解できれば『int *p = &a;』は「pは*pがint型になる。*&aはint型。よってp = &aは当然」までは理解できる。ただし「int (*(p = &a));ならわかるけど、実際にはそれだとコンパイルが通らなくてint (*p) = &a;ならコンパイルが通るのはどういうこと?」という疑問は残り続けます。
    これを解消するには、「C言語の変数宣言は『型名 変数名;』である」という認識を打ち破って、「C言語の変数宣言は『型名前半 変数名 型名後半;』である」という理解をできるようにならないといけません。典型例が中級者でも躓く関数ポインタで、関数 int f(int) に対するポインタ変数の宣言は『int (*pf)(int);』となることから、変数名は型名の後ではなく型名の中にくるものであることがよくわかります。
    あと、『int *p, q;』だと『*pがintであるような変数pと、qがintであるような変数q(つまりpはポインタ型でqはint型)』になるのもわかりにくさに拍車をかけているところ。

    • @resistan-y1h
      @resistan-y1h หลายเดือนก่อน

      Go言語のポインタはそこら辺改善した文法にしたようですね。

  • @なかむら-p9j
    @なかむら-p9j 4 หลายเดือนก่อน +6

    ポインタ、要するに「変数そのものを指す。中身はその変数のアドレス」ってだけなんだけど、理解するまで苦労したわ
    何に使うのかサンプルコードからはまったく分からなくて、データ構造とか学びだすとめっちゃ便利!ってなって感動した記憶がある

  • @tetrapo
    @tetrapo 4 หลายเดือนก่อน +6

    銭湯のロッカーと鍵みたいなもんだと理解してる、ポインタは番号の書かれた鍵でロッカーの中身が取り出せる
    二重ポインタはロッカーの中に別のロッカーの鍵が入っているイメージ

  • @Libertas011
    @Libertas011 4 หลายเดือนก่อน +2

    そもそもポインタがどのようなものか知りませんでしたが、とても分かりやすかったです。

  • @amatsuki3701
    @amatsuki3701 4 หลายเดือนก่อน +5

    エクセルすごいいい例えやな
    セルをメモリに見立てるってことやんな

  • @デラックス超
    @デラックス超 3 หลายเดือนก่อน +1

    「ぐへへ、実は裏ルートがあるんだぜ。こうするんだよぉ!」って妄想しながら書いてた
    そしてC言語のポインタと構造体のせいでjavaのインスタンスと参照が理解できず泣いてた

  • @岡本裕俊
    @岡本裕俊 2 หลายเดือนก่อน +5

    むしろC言語から他の言語に行くとポインターが無かったり関数の引数が値渡しなのか参照渡しなのか分からなくて混乱しました。。。

    • @resistan-y1h
      @resistan-y1h หลายเดือนก่อน

      数値と文字型が値渡しで
      配列やオブジェクトや関数は参照渡し
      という言語がほとんどかな。

    • @Akita_ken2236
      @Akita_ken2236 วันที่ผ่านมา +1

      Python始まりだったから、b[]=a[]のコード書こうとすると挫折しちゃいまして

  • @neko09cat
    @neko09cat 4 หลายเดือนก่อน

    C++やってるSNCTのkosen23sですがCでもC++とポインタの感覚は全く変わらないと思いつつC++はCと互換性あるからそりゃそうかって思いながら自分の中で改めてポインタを理解し直しました

  • @codergreen6131
    @codergreen6131 หลายเดือนก่อน

    Cの文法、特にアスタリスク記号に複数役割を持たせているのが沢山の初学者が苦労する原因だと思う

  • @user-bp7fy2qp9m
    @user-bp7fy2qp9m 4 หลายเดือนก่อน +4

    C言語は高級アセンブラなのに、変に抽象化して教えるから理解出来無い人が出てくる説。
    エクセルの説明では、一つのデータが複数記憶されていることになるので、将来に禍根を残しそうな。

  • @すかー-y4e
    @すかー-y4e 4 หลายเดือนก่อน

    この辺は行列の内積とかを自分で実装するとメッチャ理解度上がる。
    速度比較するとさらに有り難みも分かる。

  • @Takedakatuyori
    @Takedakatuyori 4 หลายเดือนก่อน +5

    C言語とアセンブラ言語って似ているから私的にはJava より簡単に感じます。私の専門cobol ですがw

    • @nag_lint_lino
      @nag_lint_lino 4 หลายเดือนก่อน +2

      c言語使ったことあるけど全然文法やらシステムから違うから全然難しいぞ(Javaとの比較は触ったことないのでできないが)

  • @toumorokoshi111
    @toumorokoshi111 4 หลายเดือนก่อน

    サムネ見た瞬間にその手もあったか!ってなった

  • @phononmaser1024
    @phononmaser1024 4 หลายเดือนก่อน

    是非続きを!!

  • @YO-ec7if
    @YO-ec7if 4 หลายเดือนก่อน

    C言語のポインタは難しいと認めたほうが、逆に早く習得できる気がします。

  • @POPGAMING1234
    @POPGAMING1234 3 หลายเดือนก่อน

    いまだにC言語のポインタってつかわれてるんだ

  • @荻野憲一-p7o
    @荻野憲一-p7o 3 หลายเดือนก่อน +1

    アセンブラで書いたことがない人にCで書かせようってのが無理ゲーなんだが...
    メモリにはアドレスがついてるってとこだけ理解させようってんなら、
    エクセルで説明するのも悪くない。
    エクセルのアドレスって、セルの内容として入れられるんだっけ?
    ポインタをエクセルで説明するなら、それが必要そうだけど。

    • @resistan-y1h
      @resistan-y1h หลายเดือนก่อน

      自分はマイコンのアセンブラの知識で入ったら
      ポインタに型があるってなんやねんってなったw
      インクリメントしたら型のサイズ分いっきに増加するのも知らなかったし。
      まあ、でもいきなりCよりは理解できたw

  • @ひゅい-x5w
    @ひゅい-x5w 4 หลายเดือนก่อน +3

    値渡しもエクセルで説明してくれないとわからないです。

    • @NelneL_1868
      @NelneL_1868 4 หลายเดือนก่อน +1

      値渡しはエクセルで言いますと、「ある1セル内に格納されているデータのみを渡す事」に近いと考えます。
      1セルには書式や数値、テキストを格納できますね。その「格納した書式、数値、テキストのみを渡すのが値渡し」になります。
      ここで渡されるのはあくまでセルの中のデータのみなので、受け取った後の独立したデータに編集を加えても渡した側には影響がないことになります。これが参照渡しとの違いかと考えます。
      長文大変失礼しました。

  • @地球の皆さんどうぞよろしく
    @地球の皆さんどうぞよろしく 4 หลายเดือนก่อน

    大体ポインタ辺りの学習で挫折する人が多い

    • @resistan-y1h
      @resistan-y1h หลายเดือนก่อน

      アセンブラを軽く学んだ方がいいよなー

  • @sy-cg7te
    @sy-cg7te 12 วันที่ผ่านมา

    C言語は物理メモリのアドレスを直接扱う為の言語、という基本前提も同時に学ばないと理解が進まない。
    物理メモリやペリフェラルなどを直接扱わないソフトウェアならC言語を使用すべきではない。

  • @ドリームマスター-g5z
    @ドリームマスター-g5z 4 หลายเดือนก่อน +2

    あ、これは自分もそう思う。なんでC言語の解説書ってあんなに判りにくいんだろ?って思ったよ。
    かなり昔にC言語を独学で勉強してたけど、確かにポインタのところで悩んだ記憶がある。
    確か記憶領域内のアドレスだっけか?の場所で変数を取得するんだっけ?忘れたなw

    • @resistan-y1h
      @resistan-y1h หลายเดือนก่อน

      C++の犬はワンと鳴いて
      猫はニャーと鳴くとかいう
      クラスの説明はガチで意味わからんかったからそれよりはましだが難しくはあるよな。
      オブジェクト指向は構造体の延長で教えた方が理解できる。
      同じように
      ポインタはアセンブラから学んだ方がいいかな。