On initializing a Variable length array compiler gives an error message:
[Error] variable-sized object may not be initialized
Code snippet:
int n;
printf("Enter size of magic square: ");
scanf("%d",&n);
int board[n][n] = {0};
How should Variable Length arrays be initialized?
And why it's all elements are not initialized to 0
in the way give below;
int board[n][n];
board[n][n] = {0};
?
VLAs cannot be initialized by any form of initialization syntax. You have to assign the initial values to your array elements after the declaration in whichever way you prefer.
For the sake of completeness, to initialize to 0, int array[i] = { 0 }; is unbeatable for conciseness.
In Java int[] arrays are initialized with all elements 0 by default, so no other action needs to be taken except new int[n] to create an array filled with 0. ("Then [...] a one-dimensional array is created of the specified length, and each component of the array is initialized to its default value. [...]
If you want a "variable length array" (better called a "dynamically sized array" in C++, since proper variable length arrays aren't allowed), you either have to dynamically allocate memory yourself: int n = 10; double* a = new double[n]; // Don't forget to delete [] a; when you're done!
You'll have to use memset
:
memset(board, 0, sizeof board);
VLAs cannot be initialized by any form of initialization syntax. You have to assign the initial values to your array elements after the declaration in whichever way you prefer.
No initializer shall attempt to provide a value for an object not contained within the entity being initialized.
The type of the entity to be initialized shall be an array of unknown size or a complete object type that is not a variable length array type.
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