MyArrayを初期化したいとします
char myArray[MAX] = {0};
char myArray[MAX] = {0,};
char myArray[MAX]; memset(myArray, 0, MAX);
それらはすべて等しいか、他のものよりも優先されますか?
ありがとうございました
配列が{0}
構文、明示的に指定されていないすべての値は暗黙的に0で初期化され、コンパイラーはmemset
への呼び出しを挿入するのに十分なことを知っています。
したがって、唯一の違いはスタイルです。どちらを選択するかは、使用するコーディング標準、または個人的な好みによって異なります。
実際、私は個人的にお勧めします:
char myArray[MAX] = {};
それらはすべて同じことを行いますが、私はこの方が好きです。それは最も簡潔です。 = D
ちなみに、_char myArray[MAX] = {1};
が実行することに注意してくださいnotすべての値を1に初期化します!最初の値を1に初期化し、残りをゼロに初期化するだけです。このため、char myArray[MAX] = {0};
は、正しく機能しても、誤解を招く可能性があるため、作成しないことをお勧めします。
最初の解決策が最善だと思います。
char myArray[MAX] = {0}; //best of all
どちらでも使用できます
しかし、以下の方が理解しやすく、読みやすいと思います。
char myArray[MAX];
memset(myArray, 0, MAX);
常に0で初期化することを想定しています。
->最初の方法と2番目の方法は同じです。私は1番目が好きです。
->初期化以外の0を割り当てる場合は、memset()
の3番目の方法を使用する必要があります。
->この配列が1回だけ初期化されることが予想される場合は、その前にstatic
キーワードを配置して、コンパイラーが代わりにジョブを実行するようにすることができます(ランタイムオーバーヘッドなし)。
Bzero fn(ゼロ値のバイトを書き込む)も使用できます
#include <strings.h>
void bzero(void *s, size_t n)