C语言中变量大小数组的初始化

C99标准允许可变大小的阵列(请参阅 ).但是,与普通数组不同,可变大小的数组无法初始化。

null

例如,以下程序在C99兼容的编译器上编译并运行良好。

#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 ( "" );
}
return 0;
}


输出:

0 0
0 0

但以下操作失败,出现编译错误。

#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 ( "" );
}
return 0;
}


输出:

Compiler Error: variable-sized object may not be initialized

如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享