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