如题所 char a[100] = {'0'} 与 memset(a, 0, sizeof(a)) 什么区别?
大家讲道理2017-04-17 15:26:09
リーリー
a[0]
を '0'
に初期化し、後続の要素の値を 0、つまり「ここにバー 0 があります」に初期化します。 (バーは出ません)
だと
最初の要素は「bar 0」で初期化され、後続の要素は引き続き値で初期化されます。
と
リーリーは
と同等です リーリー大家讲道理2017-04-17 15:26:09
その効果は配列 a[]
の内容をゼロに設定することですが。ただし、2 つのコードはまったく異なる状況で使用されるため、相互に置き換えることはできません:
char a[100] = {0}
は配列変数を宣言して初期化します。それ以前は a[]
は存在しませんでした。
memset(a, 0, sizeof(a))
は、a[]
が以前に宣言された後にその内容をクリアします。 a[]
はこれ以前から存在していました。
また、memset
はライブラリ関数であり、言語自体の機能ではありません。
高洛峰2017-04-17 15:26:09
1 つは a を文字 0 (0x30) で埋めること、もう 1 つは 0 を使用することです。C99 では自動的に「0」が追加されるようですが、その意味は、アドレスの特定の領域を文字で埋めることです。指定されたコンテンツ
PHP中文网2017-04-17 15:26:09
char a[]
取得された a はスタック上にあるか、グローバル変数である可能性がありますが、依然として存在します
memset は割り当てを引き起こしません。a はどこにでも配置できます
天蓬老师2017-04-17 15:26:09
a[100] = {0}; は、コーディングを容易にするために変数メモリを迅速に初期化するための構文とみなすことができます。もちろん、スコープに入ったときに再度実行することもできます。を繰り返し入力しました。
Memset はメモリを設定するための一般的な関数であり、いつでも呼び出すことができます。
PHPz2017-04-17 15:26:09
char a[100] = {0} は静的に 0 に初期化され、プログラムの実行前は対応するメモリは 0 になります
memset() は動的に 0 に初期化され、対応するメモリはプログラムの実行時にクリアされます