gcc编译器中的C变量声明-编译时错误
假设以下C变量声明:gcc编译器中的C变量声明-编译时错误,c,C,假设以下C变量声明: int *A[10], B[10][10]; 在下列用语中: A[2] A[2][3] B[1] B[2][3] 如果在C程序中用作赋值语句的左侧,则不会给出编译时错误 A) 仅限1、2和4 B) 仅限2、3和4 C) 仅限2和4 D) 4只 我已经在gcc编译器上尝试过了。我将值“0”分配给上述所有变量。只有第三个显示错误。我真的不明白原因。有人能解释一下原因吗?将声明分为: int *A[10]; int B[10][10]; 您可以看到A[10]实际上是指针数组,
int *A[10], B[10][10];
在下列用语中:
A[2]
A[2][3]
B[1]
B[2][3]
我已经在gcc编译器上尝试过了。我将值“0”分配给上述所有变量。只有第三个显示错误。我真的不明白原因。有人能解释一下原因吗?将声明分为:
int *A[10];
int B[10][10];
您可以看到A[10]
实际上是指针数组,而B[10][10]
是整数数组数组。无法将整数赋值给B[1]
的原因是B[1]
应该是int[]
类型(数组),并且不能用int
值覆盖它
分配给
A[2]
有效,因为您只是将该数组元素指向某个其他值,在本例中,int
将声明分解为:
int *A[10];
int B[10][10];
您可以看到A[10]
实际上是指针数组,而B[10][10]
是整数数组数组。无法将整数赋值给B[1]
的原因是B[1]
应该是int[]
类型(数组),并且不能用int
值覆盖它
分配给A[2]
有效,因为您只是将该数组元素指向某个其他值,在本例中是int
A[2]
,因为A
是指针数组,您可以将0分配给指针(它是空指针)A[2][3]
,因为在这个级别上您使用的是int
B[1]
,因为B
是数组的数组,而0是标量A[2]
,因为A
是指针数组,您可以将0分配给指针(它是空指针)A[2][3]
,因为在这个级别上您使用的是int
B[1]
,因为B
是数组的数组,而0是标量