ホームページ > バックエンド開発 > C++ > なぜ C は長さの接頭辞付きの文字列ではなく、NULL で終わる文字列を選択したのでしょうか?

なぜ C は長さの接頭辞付きの文字列ではなく、NULL で終わる文字列を選択したのでしょうか?

DDD
リリース: 2024-12-25 16:38:09
オリジナル
559 人が閲覧しました

Why Did C Choose Null-Terminated Strings Instead of Length-Prefixed Strings?

C で文字列が Null で終わるのはなぜですか?歴史的観点

C および C の null 終了文字列の批判者は、メモリの非効率性や潜在的なバッファ オーバーラン エラーなどの欠点をよく挙げます。ただし、その採用の背後にある理論的根拠は、言語の起源に由来しています。

C の作成者である Dennis Ritchie が説明したように、ヌル終了文字列を使用する決定は次の要素に基づいていました。

  • 長さ制限の回避: 初期のコンピューターではメモリが限られており、文字列の前に長さを付けるとメモリが少なくなりました。
  • 精度よりも利便性: 明示的な長さカウントを維持することは、特殊な終了文字 (B では e、C では null 文字) を使用するよりも便利ではないと考えられていました。 .

効率考慮事項

長さのプレフィックス付き文字列の方が高速であるという議論とは対照的に、Ritchie は、次のような特定の操作では null で終了する文字列の方が効率的であると主張しました。

  • Partial文字列操作: Null で終了する文字列を使用すると、文字列を定期的に更新することなく、素早いスライスと操作が可能になります。 length.
  • 文字のループ: 場合によっては、null で終了する文字列を反復処理すると、CPU レジスタ スペースを節約できます。

レガシーに関する考慮事項

C で NULL 終了文字列が広く使用されていることも、その普及の継続に影響を与えていますC で。 C では、長さのプレフィックス付き文字列用の std::basic_string テンプレートが導入されましたが、既存のコードとの互換性により、C では null で終了する文字列が広く採用されるようになりました。

結論

C での null 終了文字列の選択は、主にメモリの制限と利便性への要望など、歴史的な考慮事項の結果でした。長さの接頭辞付き文字列などの代替アプローチは、特定のシナリオでは利点を提供しますが、NULL で終了する文字列のレガシーおよび効率性の利点により、C 言語および C 言語での地位が確固たるものになりました。

以上がなぜ C は長さの接頭辞付きの文字列ではなく、NULL で終わる文字列を選択したのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート