Syntax Suger とは日本語で言う所の糖衣構文である。
ちょっと面白いC++の糖衣構文に絡んだ話をひとつ示す。
int array[100];
という配列において、array[10] と書くと配列の11番目の要素を指すものであるが、この ”[ ]” は糖衣構文である。これは*(array + 10)と同義である。
配列名はC++においてその配列の先頭アドレスを指すものであり、arrayがint型であることから*(array + 10) はarray(先頭アドレス)から10*sizeof(int)バイトぶん先の場所にある値を意味する。
このことから、*(array + 10) と *(10 + array) が同値であることは容易に理解できるであろう。しかし、以下の事実もまた導かれるのである
array[10] と10[array] は同値である。そう、つまり10[array]という奇妙な書き方も許されるのである。まあ、ただし、糖衣構文の存在理由(より物事を分かりやすくするため)を考えると、この記述の仕方は喜ばれるものではないだろう