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};
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
Last Updated :
28 Sep, 2018
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...