脊髄反射公的目録
tumblr
アーカイヴ

ポインタとか忘れてたのでメモる

雰囲気重視(といっておけば免責してくれる魔法の言葉)
ポインタも型の一つであるという風に覚えろ!なるほどでやんす!!アドレスを入れる事ができるのはポインタだけ!


ex)

  int* pa; //この時点ではポインタpaにはゴミアドレスが入ってる.
  int a;
  pa = &a; //この時点でポインタpaに変数aのアドレスが入る.

また,このように冗長に書かなくても
ポインタ宣言時にポインタpaの指し示すアドレスを初期化してやることもできる.
ex)

  int a;
  int* pa = &a;

ここで注意したいのが,aは初期化されていないので,*paには変な値が入っているという事だ.

  int a = 0;
  int* pa = &a;

上記の場合だと*paの値は0となる.


変数aの値を書き換えれば,*paの値も同様にかわる(当たり前だよね)ポインタはひも付きなのやで.
そして,その操作は可逆なのだ!逆間接演算子"*"をもちいれば変数aの値を直接変更させる事無く*paの値を変更させる事によって
ポインタpaの指し示すアドレスにある変数aの値を変更させる事ができる!

ex)

  int a = 34;
  int* pa = &a;
  *pa = 3;

このような書き方をすると,変数aには3という値が代入されていることになる.
逆間接演算子を用いればショートカット先からショートカット元の変数の値を変化させる事ができるのだ!
だから逆間接演算子という名前の付け方はとても良いとおもう.直感的でとてもすばらしい.
僕の持っていた本では間接参照演算子という名付けだったがこれだと分かりにくい.
逆間接演算子ばんざい!

===============
逆間接演算子"*"とはポインタ側から値を操作する事を可能にする演算子のことである.
ポインタの指しているアドレスにある変数の値を扱いたいとき等に用いる.

具体的にポインタを使うとどういうときに嬉しくなるのか

戻り値が二つ以上欲しいときとかにポインタを使うべし.
というかそれ以外の使い道って,動的メモリ確保とかでしょ.前時代の遺物ワロス
副作用こわいお.
今や富豪的プログラミングが可能となり,メモリの大きさとか気にしなくなった.リソース食いまくれ!
もう効率の良い方法とか考えんででええねや!単純で短いアルゴリズムを思いつくのが大切や!

素人なのでこういう事がつい言いたくなると言っておけばいいと思っている.
while(息が続くまで){
と言っておけばいいと思っている,
}

ふぁぼ
jones_millionの今読んでる本