わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

Essential C

はてブを見ると,今月12日に注目されたようです.
EssentialC.pdfをダウンロードして,読みました.Cの文法を確認というか復習するには,良い情報になっていると思います.pointerが指し示す先はpointee,なるほどです.またArray Names Are Const (p.37)と題する中で,"The array base address behaves like a const pointer." というのも,面白い考え方です.
通し読みし,検索をかけても,見当たらなかったものとして,次の点を挙げておくことにします.

  • 初期化を含む配列の宣言例.「int a[] = {1,3,5};」は「int a[3](同)」,「int a[5] = {1,3,5};」は「(同){1,3,5,0,0};」と解釈されることなど.
  • 配列に対するsizeof.sizeof(配列)/sizeof(配列[0])も.
  • キャスト演算子.castの説明やコード例はあるのですが,「演算子」という断りが見られません.

それと,演算子の優先順位・結合規則の表(p.41)を見たところ,++,--が上から2番目にあるので,やや古いスタイルかなとも思います.ここ数年で目にするCの解説書は,後置の++,--は最上位に入れ,前置のそれらと区別します(合わせて,キャスト演算子は他の単項演算子よりもワンランク下の優先順位で書かれます).そのように区別することによって,*p++ = *q++;という式に対し,各変数の前後の演算子の優先順位がより明確になるわけです.