関数を使用するプログラミング言語には、よりシンプルでモジュール化されたコードが含まれており、デバッグ中に変更するのが簡単です。関数は、モジュール式コードの非常に有益な部分です。関数はパラメータを受け取り、それらに対して特定の操作を実行できます。他のプリミティブ データ型と同様に、オブジェクト型または配列をパラメータとして渡すこともできます。この記事では、C で文字列型のデータを関数のパラメータとして渡す方法を説明します。
C 文字列と同様のパラメータを関数に渡す
C は、実際にはさまざまなメンバー関数が関連付けられたクラスである、より強力な文字列オブジェクトをサポートします。引数として渡す文字列オブジェクトは、通常のプリミティブ データ型の受け渡しに似ています。構文も非常に似ています。
###構文###
リーリー
次の例では、指定された文字列が回文であるかどうかを確認するプログラムを示します。関数は 2 つあり、1 つは文字列を反転し、もう 1 つは文字列が回文であるかどうかを確認します。アルゴリズムと対応する C 実装を見てみましょう。
###アルゴリズム###
関数 reverse() を定義します。これは文字列 s
を受け取ります。
n := (sの長さ/2)の床
- for i の範囲は 0 から n/2; do
- temp := s[i]
- s[i] := s[n - i - 1 ]
- s[ n - i - 1 ] := temp
-
- 終了
###戻り値###
reverse()関数の終わり
- パラメータ s
を受け入れる関数 isPalindrome() を定義します。
- revS := s を渡して reverse() を呼び出し、文字列 s
を反転します。
- s と revS が同じ場合、
- Trueを返す
-
###さもないと
-
終了 if-
Example
の中国語訳は次のとおりです: - Example
リーリー
###出力###
リーリー
- C 風の文字配列を関数に渡す
C は、C でサポートされているほぼすべての機能をサポートしているため、C のような文字配列を使用して文字列を定義することもできます。C のような文字列を関数に渡すには、文字配列またはベース アドレスへの文字ポインタを渡す必要があります。文字列の構文は次のとおりです。
###構文###
(文字ポインタを使用)
リーリー
###構文###
(文字配列を使用)
リーリー
文字配列を渡す回文チェックの同じ例を見てみましょう。ここでは、 reverse() 関数が配列を変更するため、この文字列を文字ポインタではなく文字配列として渡す必要があります。そして、isPalindrome() は文字列が反転した文字列と同じかどうかを確認するだけなので、文字ポインタまたは文字配列を受け取ることができ、結果は同じになります。アルゴリズムは似ているため、コードに直接入力します。
Example
の中国語訳は次のとおりです:
Example
リーリー
###出力###
リーリー
この例では、C で C スタイルの文字列を調整するにはいくつかの手順があることがわかります。 C スタイルの文字列の場合、長さ、文字列比較、その他の操作に cstring ライブラリを使用します。 C 文字列から C 文字列に変換するには、c_str() 関数を使用する必要がありますが、この関数は const char* を返しますが、この関数は char* 型のデータのみを受け入れます。この場合、const_cast を使用して値を char* 型に変換する必要があります。
###結論###
関数は、配列、オブジェクト型などだけでなく、プリミティブ データ型も受け入れることができます。文字列を使用する場合、C では文字列はオブジェクト型であり、C では文字配列型です。ただし、C は C 構文もサポートしているため、C でも有効です。文字列オブジェクトを渡すのは簡単ですが、文字配列を渡す場合は特別な注意が必要で、いくつかの厳密な手順に従う必要があります。 C スタイルの文字列は、配列形式または文字ポインターとして渡すことができます。関数が文字列自体を変更することがわかっている場合は、文字列を文字配列として渡す必要があります。そうでない場合、ポインターから文字列を変更することは許可されません。文字列のみを使用する場合は、ポインタまたは文字配列を使用して文字列を渡すことができ、効果は同じです。ただし、この場合、文字配列を介して渡すことは、文字列への意図しない更新を防ぐため、適切です。
以上が文字列を関数に渡す C++ プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。