我对C语法有疑问,这怎么可能:
int a[ ][2] = { 1, 2, 3, 4 };
这是合法的,为什么不这样:
int a[] = { 1, 2, 3, 4 };
int b[ ][2] = a;
甚至:
int a[] = { 1, 2, 3, 4 };
int *b[2] = a;
不合法。
从指针计算的角度来看,很难单独解决吗?仅仅是语法问题还是编译器无法推断出正确的内存步长?
gcc错误:
main.c:14:19: error: invalid initializer
int b[ ][2] = a;
答案 0 :(得分:1)
解释很简单。
两个主要原因: