ホームページ  >  記事  >  バックエンド開発  >  C で「const char *」ではなく「const char * const」を選択する理由

C で「const char *」ではなく「const char * const」を選択する理由

Barbara Streisand
Barbara Streisandオリジナル
2024-10-30 12:20:03250ブラウズ

Why Choose `const char * const` over `const char *` in C  ?

const char * const と const char * in C

定数文字ポインターを使用するコードを調べるときに、なぜ const char を使用するのかというよくある質問が生じます。 * const char * よりも const ですか?コード例を使用してこれを調べてみましょう。

<code class="cpp">void print_string(const char * the_string)
{
    cout << the_string << endl;
}

int main () {
    print_string("What's up?");
}</code>

ここでは、print_string のパラメータに 2 つのオプション (const char * と const char * const) が生じます。両者の違いは、ポインタの可変性です。

  • const char *: それが指す文字列は不変ですが、ポインタ自体は別の文字列を参照するように変更できます。 .
  • const char * const: 文字列とポインタは両方とも不変であり、print_string 内でパラメータを変更できないことが保証されます。

両方のオプションが変更されるのはなぜですか実際に働きますか?この例では、文字列もポインタも print_string で変更されていません。 const char * の関連性は、指す文字列を変更しようとするときに発生します。

次のバリエーションを考えてみましょう:

  • char* the_string: ポインタと値は可変です。
  • const char* the_string: 値は変更可能、ポインタは変更不可。
  • char* const the_string: 値は変更可能、ポインタは変更不可。
  • const char* const the_string:

提供された例では、print_string 内の the_string の意図しない変更を防ぐために、 const char * const がより適切な選択となります。これは、潜在的なエラーに対する追加の保護手段として機能します。

以上がC で「const char *」ではなく「const char * const」を選択する理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。