「 あんた ここ15年ぐらい ポインターを使う言語を触ってないじゃないのよ!」
「 ↑ 紙テープ があると思ってくれだぜ☆ メジャー(巻き尺)だと思ってもいい☆」
「 ↑ 0 ~ 7 の7マスを 1byte とし、両端に穴を開けたら A というルールにしておこうぜ☆?」
「 ↑ べつに (ぜろをふくむえぬにじょう) のテーブルにしても構わん☆」
「 ↑ 詰めて使うなだぜ☆ 新しい行……、横向きに書いてしまったので 新しい列か☆
新しい列から 続きを始めろだぜ☆
これで ZA は書けた☆ ABC も やればできるだろ☆」
「 うわっ☆! 話しの途中で 反時計回りに90°回転した☆!」
「 列の黒い数が bit、 行の赤い数が byte と思えだぜ☆」
「 ↑ で、ピアノの鍵盤の裏側みたいなやつが 付いていて、
穴に棒を入れて 穴の位置を調べていると思ってくれだぜ☆ 穴を開けているのではない☆」
「 上の図では、 赤10行目の横一列が いわゆる ハードディスクの ヘッド、
赤の10という数は プログラム・カウンターの値 だと思ってくれだぜ☆」
「 ↑ プログラム・カウンターが17だったら、こうなる☆ 簡単だろ☆」
「 ところで 10進数の17は、2進数で 10001 だぜ☆」
「 じゃあ どっかに 10001 が 穴空いているとしよう☆ これが プログラム・カウンターの値を表しているとき、
赤の5行目は ポインター だぜ☆」
「 でも そんな説明じゃみんな 納得しないのよ。
目の前の プログラムが動かないんだから」
「 じゃあ お前らの目の前のプログラムに似せてやるぜ☆!
ヘッドの厚みを2倍にして 2倍速だぜ☆!」
「 2行同時に読み込めるなら、番号も1行飛ばしで 振っていいよな☆」
「 いまどき 64bit なのに 何だぜ、18bitマシンって☆」
「 ↑ 赤1番地が、別の番地を書いていると知っていれば、
これが17番地を指す ポインター だろ☆」
「 でも そんな説明じゃみんな 納得しないのよ。
目の前の プログラムが動かないんだから」
ward initial = 'Z';
print(initial);
# Output:
# z
「 ポインターになると 分からなくなるのよ、箱とか出てくるポエムで何も理解できないのよ!」
print(&initial);
# Output:
# 17
「 ↑ べつに……☆
アンパサンド記号(&)を付けると
変数が番地を返すのは 分かるだろ☆」
ward* pInitial = &'Z';
「 ↑ 何が分からないのかが分からない☆
アスタリスク記号(*)を ポインター型 としよう☆
番地17を入れれる変数を、 番地18に作っただけじゃないか☆」
print(pInitial);
# Output:
# 17
「 ↑ ポインター型の中には どこか別の番地 が入っていて☆」
print(&pInitial);
# Output:
# 18
「 ↑ ポインター型変数の頭 に & を付けると、
自分の番地が入っていて☆」
print(*pInitial);
# Output:
# Z
「 ↑ アスタリスク記号(*)を ポインター型変数の頭 に付けると、
指しているどこかの番地の中身 を取れるだけじゃないか☆」
「 C言語は アスタリスク記号 を使い回しすぎじゃないのか☆
型宣言は word*
と書くのではなく address as word
とでも書けば 視覚的に混乱しないだろ☆」
「 ↑ 長ったらしい……、&で自分の番地確認して、 ポインターには別の番地が入っていて、 *で別の番地に行くだけだろ☆」
ward** ppInitial = &pInitial;
「 ↑ ポインターの番地を入れる ポインターがあってもいいだろ☆」
print(ppInitial);
# Output:
# 18
「 ↑ ポインターのポインターには どこか別の番地が入っていて☆」
print(&ppInitial);
# Output:
# 19
print(*ppInitial);
# Output:
# 17
「 ↑ 頭に*を付ければ 別の番地に入っている内容を取れるだけだろ☆」
print(**ppInitial);
# Output:
# Z
「 ↑ ダブル・ポインターにすれば、別の番地に入っているポインターに入っている別の番地の内容を取れるだけだろ☆」
「 まーだまだ 分からないものは あるのよ! スマートポインター というのもあるのよ!」
「 ↑ Rust言語にしておけば そんなの覚えなくて済むのに、なんでC++使ってるんだぜ☆!」
<書きかけ>
Crieitは個人で開発中です。
興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!