14欠片目:紛らわC言語
こんにちは。本日、湯船でウトウトしていたら、浴槽に頭を打ち付け目が覚めたvoidです。
(痛みとかじゃなくて、大きな音に驚いて目が覚めました。心臓バクバクでした。)
昨日は紛らわしい日本語とかについて書いていましたが、そう言えばプログラミング言語にもややこしいやつがいたなぁと思い、今日はC言語さんのややこしい点について書いていこうと思います。
同じ記号のはずなのに...
C言語の厄介な点の一つとして、同じ記号が複数の別の役割を持っていることがあります。
例えば『*』アスタリスクは、
1.乗算演算子
2.ポインタ宣言子
3.間接参照演算子
の3つもの意味を持ってしまっています。
自分が初めてC言語を学んだときには、特に2と3の違いを理解するのに苦しんだ記憶があります。どちらもポインタを使うときに出てくるので、大変紛らわしいです。
/* アスタリスク豪華盛り合わせサンプルコード*/ int a = 0; /* 普通の変数aの宣言*/ int* pa; /* 変数aへのポインタ変数の宣言<<ポインタ宣言子>>*/ pa = &a; /* ポインタ変数paに変数aのアドレスを代入*/ a = 10; /* 変数aに10を代入*/ *pa = a * 2; /* ポインタ変数paの参照(すなわちa)にa(10)×2を代入<<関接参照演算子>>*/
ふと、元々のC言語でのコメントは「//」は使えなくて、「/**/」だったなーと思い出して書いてたら、*の場所が増えて思いの外読みにくかったです。
宣言するときは宣言子。値を参照するときは、間接参照演算子。
(意味的にはそのままなので、慣れれば割と問題ないですね)
他にも、『&』アンパサンドも、
・アドレス演算
・ビット積演算
・C++の参照
等で使われています。
豆粒ほどもない豆知識
以上。本日の豆粒ほどもない豆知識のお話でした。
もはや、ゴマ粒です。ゴマ知識です。いいですね、ゴマ知識。
テレレテッテテッテッテー♪
新しいカテゴリー「ゴマ知識」 が 追加された