c - 未指定两个边界的二维数组

标签 c arrays

我看了这个SO post没有帮助。

int main()
{
  int a[][] = {{1,2},{3,4}};
}

错误

$ gcc  a.c                                                                      
a.c:6:8: error: array has incomplete element type 'int []'
  int a[][] = {{1,2},{3,4}};
       ^
1 error generated.

为什么 a[][] 类型不完整?

为什么 int a[][2] 没问题?

我会假设既然编译器可以初始化这个二维数组,它也可以自动计算出边界?我知道我需要提供尺码,但为什么呢?对语言有要求吗?

最佳答案

只有一个索引可以自动调整大小。否则,您可能会在大小上有任何一对因素。所以 a[][2] 有效,但 a[][] 无效,因为它无法猜测数组数组的大小。

关于c - 未指定两个边界的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39989927/

相关文章:

c - 实现strnstr

c++ - 用文件路径填充 WCHAR 数组

php - 在php/mysql中搜索数组查询结果

c - 堆溢出攻击

c - 用++*ptr指向int数组并进入无限循环

c - 将字符串字符转换为 int

C 编程,绝对初学者指南 - 第 19 章,strcat() 函数代码无法正常工作

javascript - 获取数组中每个元素的长度 - JavaScript

php - Laravel 数组到字符串的转换

Java数组最小值和最大值问题