言語とは何かというとき、形式論と意味論という二つのアプローチがあります。チョムスキーの生成文法は100%形式論です。それに基づいたALGOL系の言語としてCも形式論が押し通していますが、意味論を無視することはできません。
K&Rでは、Appendix A のA5に短く書かれているのが左辺値(LValue)の問題です。Cでは、代入は演算子として処理されます。そこから、x=y=z=0;のような文も書けることになります。しかし、代入演算子の左辺には何かの実体を指すものが来なくては困りますね。
たとえば、(x+3)=(y+5);なんてありえないでしょ。*p++=*q++;というときには、ポインタが指すものはどこかの実体ですので、この式は正しいのです。しかし、x++=y++;とは書けません。x++はx+1に他ならないからです。
ということは、++演算子や--演算子の作用する対象もLValueでなければならないとも言えます。x[n]++;はオーケーなのです。
まとめていうと、ある種の処理の対象はどこかの実体を指していなければならないということです。それを左辺値(LValue)と呼んでいます。まあ、話はこれだけです。なので、K&Rでも簡単に書いておしまいです。
ちなみに、Cでは実体はスタック・スタティック・ヒープのどれかに作成されます。このあたりのメモリ管理の中身まで意識しなければならない、あるいは操作することができるという意味で、Cは構造化アセンブラと呼ぶことができます。いやあ、K&Rは本当にいい本ですね。もちろん、初心者には全く薦めませんけど。
メモリ管理の問題というのは、大変に本質的な問題です。僕の理解しているところでは、もともとFortranでは、スタティックな確保しかできなかった。それで再帰呼び出しもできなかったと思います。
それはともかく、Cでは関数呼び出しとはスタック上に新しく自動変数(引数を含む)などのワンセット分のメモリを確保して呼び出す。つまり、再帰呼び出しでも実際には同じ名前の別の関数を呼んでいると理解できる。と思います。
スタティックなメモリ確保というのはつまりグローバルな変数や配列ということですね。このあたりはFortranと同じと思います。ヒープというのは、newとかで確保した領域のことです。マウスの移動のたびに確保していたら足りなくなるとか、いろいろと注意点はあります。うっかり、使用中の領域を解放したら、しばらくたってから別の値が書き込まれて、この時は原因を見つけるのに苦労しました。
さて、このあたりにアクセスできるのがポインタという機能です。大変に強力であり危険な機能です。とあるアニメに「あれは防具ではなく拘束具だ」というセリフがありましたが、C++とかC#というのはCのポインタの機能を制限しようとしたものだと思っています。