6

次のように文字列配列を終了するには、null 文字を使用する必要があることを知っています。

char str[5] = { 'A','N','S','\0' };

しかし、このような配列を終了するためにヌル文字を使用することが不可欠な理由を知りたかっただけです。

また、これらを終了するためにヌル文字を追加してみませんか :-

char str1[5]="ANS";
4

2 に答える 2

9

NULL 終了は、C で char 配列を文字列 (NULL 終了文字配列) と区別するものです。ほとんどの文字列操作関数は、文字列がいつ終了したか (およびそのジョブが完了したか) を知るために NULL に依存し、勝利しました。単純な char-array では動作しません (たとえば、配列の境界を越えて動作し続け、メモリ内のどこかに NULL が見つかるまで続行します。多くの場合、メモリが破損します)。

C では、0 (整数値) はブール値の FALSE と見なされ、その他の値はすべて TRUE と見なされます。 ifforwhileは、0 (FALSE) または非ゼロ (TRUE) を使用して、分岐またはループする if を抑止します。char は整数型で、NULL 文字 (\0) は実際には 10 進整数値 0 の char です。間違い。これにより、文字列の操作やコピーなどの関数を非常に簡単に作成できます。処理中の文字がゼロ以外 (つまり TRUE) である限り安全にループし、NULL 文字 (つまり. FALSE) - 文字列の終わりを意味します。比較する必要がないため、非常に単純なループになります。0 (FALSE) かそうでない (TRUE) かを知る必要があるだけです。

例:

    char source[]="テスト"; // 実際: Test \0 ('\0' は NULL 文字です)
    char dest[8];

    int i=0;
    char curr;

    行う {
       通貨 = ソース[i];
       dest[i] = 通貨;
       i++;
       } while(現在); //条件が TRUE である限りループします。ゼロ以外、NULL 以外のすべての文字。

于 2013-06-08T02:55:26.873 に答える
1

必須ではありませんが、標準ライブラリのいずれかを使用している場合、それらはすべてそれを期待しています。

于 2013-06-08T02:34:54.513 に答える