gcc 编译器中的 C 变量声明 - 编译时错误

标签 c

假设以下 C 变量声明:

int *A[10], B[10][10];

以下表达式:

  1. A[2]
  2. A[2][3]
  3. B[1]
  4. B[2][3]

如果用作 C 程序中赋值语句的左侧,则不会产生编译时错误。

A) 只有 1、2 和 4

B) 仅 2、3 和 4

C) 只有 2 和 4

D) 只有 4

我已经在 gcc 编译器上试过了。我将值“0”分配给上述所有变量。只有第三个显示错误。我真的不明白原因。有人可以解释一下原因吗?

最佳答案

  1. 您可以将 0 赋值给 A[2],因为 A 是一个指针数组,您可以将 0 赋值给一个指针(它是一个 NULL 指针)。
  2. 您可以将 0 分配给 A[2][3],因为在此级别您使用的是 int
  3. 不能将 0 赋值给 B[1],因为 B 是数组的数组,而 0 是标量。
  4. 参见 2。

关于gcc 编译器中的 C 变量声明 - 编译时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4703095/

相关文章:

c - 如何使指针在新结构中兼容?

c - SDCC编译器switch语句,ack : section for?是什么

C - 从字符串的中间开始遍历

c - Execvp(argv[1], argv),不返回那个文件或目录

C 函数是否可以根据参数是否可变而具有双重用途?

c - 为什么我的指针数组返回一个 unicode 字符?

c - 我怎样才能找到单个成绩的平均值,然后找到C中多个成绩的平均值?

c - 关于编译和库的两个基本问题

c - 打印程序,请解释输出

根据变量名创建目录