📜  在C中初始化变量大小的数组

📅  最后修改于: 2021-05-26 02:59:54             🧑  作者: Mango

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基础课程》。