c++ - char a[100] = {'\0'}与memset(a, 0, sizeof(a))有什么区别?
天蓬老师
天蓬老师 2017-04-17 15:24:09
0
7
1460

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

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全員に返信(7)
大家讲道理

リーリー

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

リーリー

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

リーリー

と同等です リーリー
いいねを押す +0
大家讲道理

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

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

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

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

いいねを押す +0
巴扎黑

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

いいねを押す +0
小葫芦

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

いいねを押す +0
洪涛

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

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

いいねを押す +0
Peter_Zhu

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

いいねを押す +0
PHPzhong

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート