C言語における文字配列の初期化のいくつかの方法

3736 ワード

1.C言語における文字配列の初期化
  • C言語では、文字列は文字配列として処理される.したがって、文字列には2つの宣言方式があり、1つは文字配列であり、1つは文字ポインタである.
  • 1.1文字配列を直接1つずつ初期化する:文字配列の初期化、最も理解しやすい方法は文字ごとに配列中の各要素に与えることである.
        char strr[] = {'I',' ','a','m',' ','h','a','p','p','y'};
    
  • 注意:カッコで指定された文字の個数が配列の長さより大きい場合は、構文エラーによって処理されます.配列の長さより小さい場合は、これらの文字配列の前の要素のみを、残りの要素は自動的に空の文字(すなわち'0')にします.
  • 1.2文字列定数で文字配列を初期化する:c言語では、文字列を文字配列として処理する.したがって、文字列を使用して文字配列
        char str[] = {"I am happy"};
        //      {}
        char str[] = "I am happy";
    
  • を初期化することができる.
  • 注意:上記のような文字配列の全体的な付与は、文字配列の初期化時にのみ使用でき、文字配列の付与には使用できません.文字配列の付与は、その要素に対して1つ1つのみ付与できます.次の付与方法は間違っています.
        char str[];
        str = "I am happy";  //  ,                (     : C                    ;“=”             ,             
    
  • これは文字配列の初期化の2つの方法であるが、この2つの方法は実際には等価ではない.配列の長さが異なる.
        #include "iostream"
        #include "cstring"
    
    
        using namespace std;
    
    
    
        int main(){
            /*       */
            //          
            char str[10] = {'I',' ','a','m',' ','h','a','p','p','y'};  //   \0,       
            cout << "str=" << str << ",sizeof(str)=" << sizeof(str) << endl;
            //          
            char str1[] = "I am happy";  //    char str1[] = {"I am happy"};
            char str2[] = "python";
            // char str2[] = {'p', 'y', 't','h','o','n'} char str2[] = "python"   
            // char str2[] = {'p', 'y', 't','h','o','n', '\0'} char str2="python"  
            char str3[] = {'p', 'y', 't','h','o','n'};
            char str4[] = {'p', 'y', 't','h','o','n', '\0'};
            
            int num_str2 = sizeof(str2);
            int num_str3 = sizeof(str3);
            int num_str4 = sizeof(str4);
            
            cout << "str2 str3   
    "; cout << "str2 = " << str2 << ",sizeof(str2) = " << num_str2 << endl; cout << "str3 = " << str3 << ",sizeof(str3) = " << num_str3 << endl; cout << "str2 str4
    "; cout << "str2 = " << str2 << ",sizeof(str2) = " << num_str2 << endl; cout << "str4 = " << str4 << ",sizeof(str4) = " << num_str4 << endl; return 0; }
  • 1.3文字ポインタ:C言語では文字ポインタを使用して文字列
  • を格納することもできます.
  • 文字ポインタ初期化:
        char *str = "python";
    
  • C言語は文字列定数を文字配列に従って処理し、メモリに文字配列を開いて文字列定数を格納し、プログラムは文字列ポインタ変数strを定義する際に、文字列ヘッダアドレスをstrに割り当てるだけである.出力:
        cout << str << endl;
    
  • システムは、strが指す文字を最初に出力し、その後、'0'に遭遇するまで1を加算する.配列の出力方式と同じです.文字ポインタの割り当て:
        char *str;
        str = "python";  //                 ,       
    
  • 2.まとめ
  • はC言語では文字列の操作を直接提供していないが、その文字列操作は文字列に変換することによって行われ、例えば文字配列、文字ポインタ、その本質は文字に対する操作である.
  • は文字配列として、通常の配列と同様に、各要素が1文字であることを区別するため、文字配列に「=」で直接付与することはできない(parr[]=」python、誤った付与方式である)が、各要素に付与することはできる(charr[12]='0'が正しい).
  • 文字列は必ず'0'で終わる.文字配列と文字ポインタは文字列全体として初期化され、システムは自動的に'0'を追加します.文字配列については、単一の文字で初期化または付与する場合は必ず終了文字'0'を考慮する.

  • 3.参考ブログ
  • ブログリンク