

中嶋悟
名前:中嶋 悟(なかじま さとる) ニックネーム:サトルン 年齢:28歳 性別:男性 職業:会社員(IT系メーカー・マーケティング部門) 通勤場所:東京都千代田区・本社オフィス 通勤時間:片道約45分(電車+徒歩) 居住地:東京都杉並区・阿佐ヶ谷の1LDKマンション 出身地:神奈川県横浜市 身長:175cm 血液型:A型 誕生日:1997年5月12日 趣味:比較記事を書くこと、カメラ散歩、ガジェット収集、カフェ巡り、映画鑑賞(特に洋画)、料理(最近はスパイスカレー作りにハマり中) 性格:分析好き・好奇心旺盛・マイペース・几帳面だけど時々おおざっぱ・物事をとことん調べたくなるタイプ 1日(平日)のタイムスケジュール 6:30 起床。まずはコーヒーを淹れながらニュースとSNSチェック 7:00 朝食(自作のオートミールorトースト)、ブログの下書きや記事ネタ整理 8:00 出勤準備 8:30 電車で通勤(この間にポッドキャストやオーディオブックでインプット) 9:15 出社。午前は資料作成やメール返信 12:00 ランチはオフィス近くの定食屋かカフェ 13:00 午後は会議やマーケティング企画立案、データ分析 18:00 退社 19:00 帰宅途中にスーパー寄って買い物 19:30 夕食&YouTubeやNetflixでリラックスタイム 21:00 ブログ執筆や写真編集、次の記事の構成作成 23:00 読書(比較記事のネタ探しも兼ねる) 23:45 就寝準備 24:00 就寝
l*値とl値の違いを理解する基本
プログラミングを学び始めると、つまずきやすい用語として「l値(左辺値)」と「r値(右辺値)」があります。両者の違いを知ることで、代入や演算の挙動を正しく読み解く力が身につきます。ここで新たに出てくるのが「l*値」という言葉です。これはポインタのデリファレンス結果として現れる値のことを指すことが多く、l値とr値の関係を理解する手がかりになります。
まず押さえるべき点は、l値は「場所を指す表現」であり、l*値は「その場所を指すポインタのデリファレンス結果」であるという点です。l値は代入の左側に置くことができる表現ですが、r値は右側で使うのが基本です。l*値はデリファレンスして得られる値で、状態次第では左辺値にも右辺値にも成り得ます。これが日常的なプログラミングの感覚に結びつく大事な違いです。
例えば、int a = 5; int* p = &a; という状況を想像してください。ここで *p は a の値を指しますが、代入の左辺として使うと a の値を書き換えることができます。つまり *p は l値になり得る最も身近な例です。反対に、p 自身は「ポインタの値」であり、それ自体は代入の左辺として使えないことが多い(p = some_address は可能ですが、p が指す先を変えるわけではありません)という点も覚えておくべきです。
このように l値・r値・l*値の関係は、単純な用語の違い以上に「どう値を扱い、どこに書き込めるのか」という現実的な使い方に直結します。初心者のうちは混乱しがちですが、段階を追って整理すれば自然と理解できます。次の章では、具体的な違いを表にして整理します。
まずは要点をまとめると、l値は左側への代入が可能な場所を表す表現、l*値は間接参照の結果として現れる値で、場合によっては左辺値にも右辺値にもなり得るということです。
l値とl*値の成り立ちを詳しく見てみよう
ここからは実際の感覚をつかむための説明です。l値は「場所」を指す表現なので、変数そのものや配列の要素など、コンピュータのメモリ上の場所を指すときに使われます。これに対して r値は「値そのもの」を表す表現であり、計算の結果として生まれた新しい値を指します。l*値はポインタを使う場面で登場します。ポインタ p が指す先のオブジェクトをデリファレンスすると得られる値が l*値の代表例です。ここがポイントで、デリファレンス結果が「左辺値として扱えるかどうか」はオブジェクトの性質や文脈によって変わります。これを意識するだけで、代入の可否や式の意味がぐんと分かりやすくなります。
この考え方をもう少し整理すると、次の表が役に立ちます。
表を見ると、l値と l*値の関係がどう変わるか、そしてどんな場面で代入に使えるのかが見えてきます。日常のプログラミングでよく起こる誤解の多くは、これらの“場所と値”の区別があやふやになることから生じます。正しく区別して使えば、コードの動きはずっと予測しやすくなります。
l値とl*値の違いを表で整理
この表を日頃の練習ノートに貼っておくと、式を読んだときに「この表現は左辺に置けるのか、それとも値そのものなのか」をすぐ判断できるようになります。覚えるべき大切なポイントは、l値は場所を指す表現、l*値はデリファレンスで得られる値であるという基本に立ち返ることです。今後はこの前提を念頭に、実際のコードを眺めると理解が深まっていくでしょう。
小ネタです。l値とl*値の違いを覚えるコツは、日常の文書を思い浮かべること。例えば「箱Aにはリンゴが入っている」を l値、「箱Aのリンゴの数」を r値と混同しやすいが、デリファレンスの概念で整理すると混乱が減ります。友達と話すときには、'箱の場所を指すのがl値、箱の中身を表すのがr値、箱の中身を取り出す動作が*演算子で得られるものがl*値' という風に説明すると伝わりやすいです。