検索

ホームページ  >  に質問  >  本文

c++ - char a[100] = {'\0'}与memset(a, 0, sizeof(a))有什么区别?

如题所 char a[100] = {'0'} 与 memset(a, 0, sizeof(a)) 什么区别?

天蓬老师天蓬老师2805日前1490

全員に返信(7)返信します

  • 大家讲道理

    大家讲道理2017-04-17 15:26:09

    リーリー

    a[0]'0' に初期化し、後続の要素の値を 0、つまり「ここにバー 0 があります」に初期化します。 (バーは出ません)
    だと

    リーリー

    最初の要素は「bar 0」で初期化され、後続の要素は引き続き値で初期化されます。

    リーリー

    と同等です リーリー

    返事
    0
  • 大家讲道理

    大家讲道理2017-04-17 15:26:09

    その効果は配列 a[] の内容をゼロに設定することですが。ただし、2 つのコードはまったく異なる状況で使用されるため、相互に置き換えることはできません:

    • char a[100] = {0} は配列変数を宣言して初期化します。それ以前は a[] は存在しませんでした。

    • memset(a, 0, sizeof(a)) は、a[] が以前に宣言された後にその内容をクリアします。 a[]はこれ以前から存在していました。

    また、memset はライブラリ関数であり、言語自体の機能ではありません。

    返事
    0
  • 巴扎黑

    巴扎黑2017-04-17 15:26:09

    char a[100] = {'0'} 内容はコンパイル時に決定できますが、memset は実行時まで内容を指定された値に設定しません

    返事
    0
  • 高洛峰

    高洛峰2017-04-17 15:26:09

    1 つは a を文字 0 (0x30) で埋めること、もう 1 つは 0 を使用することです。C99 では自動的に「0」が追加されるようですが、その意味は、アドレスの特定の領域を文字で埋めることです。指定されたコンテンツ

    返事
    0
  • PHP中文网

    PHP中文网2017-04-17 15:26:09

    char a[]取得された a はスタック上にあるか、グローバル変数である可能性がありますが、依然として存在します

    memset は割り当てを引き起こしません。a はどこにでも配置できます

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-17 15:26:09

    a[100] = {0}; は、コーディングを容易にするために変数メモリを迅速に初期化するための構文とみなすことができます。もちろん、スコープに入ったときに再度実行することもできます。を繰り返し入力しました。
    Memset はメモリを設定するための一般的な関数であり、いつでも呼び出すことができます。

    返事
    0
  • PHPz

    PHPz2017-04-17 15:26:09

    char a[100] = {0} は静的に 0 に初期化され、プログラムの実行前は対応するメモリは 0 になります
    memset() は動的に 0 に初期化され、対応するメモリはプログラムの実行時にクリアされます

    返事
    0
  • キャンセル返事