KDOC 314: Cの配列はメモリ効率のため長さを保持していない
この文書のステータス
- 作成
- 2024-11-29 貴島
- レビュー
- 2024-11-30 貴島
概要
Cの配列はメモリ効率のため長さを保持していないという。
長さを保持しないことによるメリット。
- 長さを保持する領域が必要ない
- 長さの保持領域がないので、配列長の制限もない
デメリット。
- 終端がわからないので印が必要となる
- 最後までたどらないと全体の長さがわからない
char a[] = {'h', 'e', 'l', 'l', 'o', '\0'};
関連
抽象。
- 付帯情報を省くと節約になるが、終わりの印や最後までたどる手間が要る
関連。
- 対比: KDOC 229: 浮動小数点を手計算する。情報を省いても、取り戻す手間がかからない例
- 類推: KDOC 245: パックしたデータ型がどのように保存されているか見る。詰めて場所を節約すると、取り出すときに別の手間が増えるトレードオフの例
- 動機: KDOC 310: なぜCの文字列はnull終端なのか?。きっかけになった疑問。そもそも配列がどのようになっているか考えた