Say I want to initialize myArray
char myArray[MAX] = {0}; char myArray[MAX] = {0,}; char myArray[MAX]; memset(myArray, 0, MAX);
Are they all equal or any preferred over another?
Thank you
Using Initializer List. int arr[] = { 1, 1, 1, 1, 1 }; The array will be initialized to 0 if we provide the empty initializer list or just specify 0 in the initializer list.
No, stuff will be an empty array of strings, not an empty string.
The array will be initialized to 0 in case we provide empty initializer list or just specify 0 in the initializer list. Designated Initializer: This initializer is used when we want to initialize a range with the same value. This is used only with GCC compilers.
Please note that the global arrays will be initialized with their default values when no initializer is specified. For instance, the integer arrays are initialized by 0 . Double and float values will be initialized with 0.0 . For char arrays, the default value is '\0' .
Actually, in C++, I personally recommend:
char myArray[MAX] = {};
They all do the same thing, but I like this one better in C++; it's the most succinct. (Unfortunately this isn't valid in C.)
By the way, do note that char myArray[MAX] = {1};
does not initialize all values to 1! It only initializes the first value to 1, and the rest to zero. Because of this, I recommend you don't write char myArray[MAX] = {0};
as it's a little bit misleading for some people, even though it works correctly.
They are equivalent regarding the generated code (at least in optimised builds) because when an array is initialised with {0}
syntax, all values that are not explicitly specified are implicitly initialised with 0, and the compiler will know enough to insert a call to memset
.
The only difference is thus stylistic. The choice will depend on the coding standard you use, or your personal preferences.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With