C99标准允许使用可变大小的数组(请参见此)。但是,与普通数组不同,可变大小的数组无法初始化。
例如,以下程序可以在与C99兼容的编译器上编译并正常运行。
#include
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;
}
输出:
0 0
0 0
但是以下操作因编译错误而失败。
#include
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;
}
输出:
Compiler Error: variable-sized object may not be initialized
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。