假设以下 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”分配给上述所有变量。只有第三个显示错误。我真的不明白原因。有人可以解释一下原因吗?
最佳答案
- 您可以将 0 赋值给
A[2]
,因为A
是一个指针数组,您可以将 0 赋值给一个指针(它是一个 NULL 指针)。 - 您可以将 0 分配给
A[2][3]
,因为在此级别您使用的是int
。 - 不能将 0 赋值给
B[1]
,因为B
是数组的数组,而 0 是标量。 - 参见 2。
关于gcc 编译器中的 C 变量声明 - 编译时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4703095/