1. 主页
  2. 文档
  3. C语言教程
  4. C语言数组和字符串
  5. 在 C 中初始化变量大小的数组

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

C99 标准允许可变大小的数组。但是,与普通数组不同,可变大小的数组不能被初始化。

例如,以下程序在 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("\n");
}
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("\n");
}
return 0;
}

输出:

编译器错误:可变大小的对象可能未初始化

 

这篇文章对您有用吗?