Initialization of variables sized arrays in C
The C99 standard allows variable sized arrays (see this). But, unlike the normal arrays, variable sized arrays cannot be initialized.
For example, the following program compiles and runs fine on a C99 compatible compiler.
#include<stdio.h> int main() { int M = 2; int arr[M][M]; int i, j; for (i = 0; i < M; i++) { for (j = 0; j < M; j++) { arr[i][j] = 0; printf ( "%d " , arr[i][j]); } printf ( "\n" ); } return 0; } |
Output:
0 0 0 0
But the following fails with compilation error.
#include<stdio.h> int main() { int M = 2; int arr[M][M] = {0}; // Trying to initialize all values as 0 int i, j; for (i = 0; i < M; i++) { for (j = 0; j < M; j++) printf ( "%d " , arr[i][j]); printf ( "\n" ); } return 0; } |
Output:
Compiler Error: variable-sized object may not be initialized
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Please Login to comment...