C ++で使用する前に文字列を初期化する必要があるのはなぜですか?

ニック・チェン

私はいくつかのC ++チュートリアルを読んでいて、文字列が初期化されることもあれば(「初期化された」は適切な用語ではないかもしれません)、そうでないこともあります。

なぜ、いつ?

私が読んでいたコードは次のとおりです。

char name[50];
char lastname[50];
char fullname[100];
...
cin.getline ( name, 50 );
...
cin.getline ( lastname, 50 );
fullname[0] = '\0';            // strcat searches for '\0' to cat after
strcat ( fullname, name );     // Copy name into full name
strcat ( fullname, " " );      // We want to separate the names by a space
strcat ( fullname, lastname ); // Copy lastname onto the end of fullname

誰かが親切に説明してください。

壊れた足

他のデータ型と同じです。デフォルトでは、ローカル変数にはガベージ値が含まれています。したがって、その値を読み取る場合は、初期化します。ただし、変数に書き込むことがわかっている場合は、初期化の部分をスキップできます。

例:

char a[20]; //local variable

ガベージが含まれているため、読み取る前に意味のあるデータを書き込む必要があります。ただし、書き込みを行うだけの場合は、初期化をスキップできます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

C ++で文字列を初期化する必要がありますか?

分類Dev

C ++の配列に定数式のサイズが必要な場合、constだけで変数を使用して初期化できるのはなぜですか?

分類Dev

C ++でstd :: array <SomeStruct、size>の初期化時に各アイテムのタイプを指定する必要があるのはなぜですか

分類Dev

「charの配列の初期化文字列が長すぎる」がC ++ではなくCで正常にコンパイルされるのはなぜですか?

分類Dev

Cでポインタを初期化する2つの異なる方法があるのはなぜですか

分類Dev

printfに渡すときに文字列をc_str(c文字列)に変換する必要があるのはなぜですか?

分類Dev

C / C ++で配列へのポインタを使用する必要があるのはなぜですか?

分類Dev

C#で単にSystem.Actionを実行する前に、Messaging / Signal / Eventライブラリを使用する必要があるのはなぜですか?

分類Dev

const変数をCで初期化する必要がないのはなぜですか?

分類Dev

C ++の文字列リテラル(char *)は定数である必要があるのはなぜですか?

分類Dev

C ++では、マージする前にリストをソートする必要があるという要件があるのはなぜですか

分類Dev

C#を学ぶ必要があるのはなぜですか?

分類Dev

C ++で文字列を使用するためにstdと文字列ライブラリの両方が必要なのはなぜですか

分類Dev

2次元配列。Cで列のサイズを宣言する必要があるのはなぜですか

分類Dev

C ++で多重継承を回避する必要があるのはなぜですか?

分類Dev

すでにchar []があるのに、c ++で文字列が必要なのは何ですか?

分類Dev

C#がCOMDLLを参照するために登録する必要があるのはなぜですか?

分類Dev

C#では、string.Empty、String.Empty、または ""を使用して文字列を初期化する必要がありますか?

分類Dev

C#で配列のようにリストを初期化できるのはなぜですか?

分類Dev

C ++文字列に文字を割り当てると、文字列の長さが0になるのはなぜですか?

分類Dev

C ++ 20で依存型の前に「typename」を指定する必要がないのはなぜですか?

分類Dev

C ++の空の文字列sに対してs[0]が空の文字列であるのはなぜですか?

分類Dev

C ++でテンプレートを使用するには、タスクの初期化が必要ですか?

分類Dev

最新のC ++で文字列を初期化する方法に違いはありますか?

分類Dev

void *タイプにキャストする前にobjective-cハンドラーをコピーする必要があるのはなぜですか?

分類Dev

c ++ regex_match関数で検索文字列を関数の外部で定義する必要があるのはなぜですか?

分類Dev

コンテナ内でbash -l -cを使用する必要があるのはなぜですか?

分類Dev

Objective-cで@propertyキーワードを使用する必要があるのはなぜですか?

分類Dev

C ++ヘッダーファイルで「#ifdefinedIdentifier」を使用する必要があるのはなぜですか?

Related 関連記事

  1. 1

    C ++で文字列を初期化する必要がありますか?

  2. 2

    C ++の配列に定数式のサイズが必要な場合、constだけで変数を使用して初期化できるのはなぜですか?

  3. 3

    C ++でstd :: array <SomeStruct、size>の初期化時に各アイテムのタイプを指定する必要があるのはなぜですか

  4. 4

    「charの配列の初期化文字列が長すぎる」がC ++ではなくCで正常にコンパイルされるのはなぜですか?

  5. 5

    Cでポインタを初期化する2つの異なる方法があるのはなぜですか

  6. 6

    printfに渡すときに文字列をc_str(c文字列)に変換する必要があるのはなぜですか?

  7. 7

    C / C ++で配列へのポインタを使用する必要があるのはなぜですか?

  8. 8

    C#で単にSystem.Actionを実行する前に、Messaging / Signal / Eventライブラリを使用する必要があるのはなぜですか?

  9. 9

    const変数をCで初期化する必要がないのはなぜですか?

  10. 10

    C ++の文字列リテラル(char *)は定数である必要があるのはなぜですか?

  11. 11

    C ++では、マージする前にリストをソートする必要があるという要件があるのはなぜですか

  12. 12

    C#を学ぶ必要があるのはなぜですか?

  13. 13

    C ++で文字列を使用するためにstdと文字列ライブラリの両方が必要なのはなぜですか

  14. 14

    2次元配列。Cで列のサイズを宣言する必要があるのはなぜですか

  15. 15

    C ++で多重継承を回避する必要があるのはなぜですか?

  16. 16

    すでにchar []があるのに、c ++で文字列が必要なのは何ですか?

  17. 17

    C#がCOMDLLを参照するために登録する必要があるのはなぜですか?

  18. 18

    C#では、string.Empty、String.Empty、または ""を使用して文字列を初期化する必要がありますか?

  19. 19

    C#で配列のようにリストを初期化できるのはなぜですか?

  20. 20

    C ++文字列に文字を割り当てると、文字列の長さが0になるのはなぜですか?

  21. 21

    C ++ 20で依存型の前に「typename」を指定する必要がないのはなぜですか?

  22. 22

    C ++の空の文字列sに対してs[0]が空の文字列であるのはなぜですか?

  23. 23

    C ++でテンプレートを使用するには、タスクの初期化が必要ですか?

  24. 24

    最新のC ++で文字列を初期化する方法に違いはありますか?

  25. 25

    void *タイプにキャストする前にobjective-cハンドラーをコピーする必要があるのはなぜですか?

  26. 26

    c ++ regex_match関数で検索文字列を関数の外部で定義する必要があるのはなぜですか?

  27. 27

    コンテナ内でbash -l -cを使用する必要があるのはなぜですか?

  28. 28

    Objective-cで@propertyキーワードを使用する必要があるのはなぜですか?

  29. 29

    C ++ヘッダーファイルで「#ifdefinedIdentifier」を使用する必要があるのはなぜですか?

ホットタグ

アーカイブ