什么是“表达语法”

时间:2018-07-15 20:06:21

标签: c

我正在阅读由 K&R 编写的 C编程语言,我被困在一条声明中,声明有关声明的内容:

  

变量声明的语法模仿可能出现该变量的表达式的语法。

enter image description here

这是我从上述声明中所了解的:

当我们声明一个变量(例如int a)时,这意味着当在表达式中使用该标识符(a)时,它将返回指定类型的值({ {1}}。

我正确吗? 表达语法到底是什么意思?

1 个答案:

答案 0 :(得分:7)

让我们看几个例子。

使用

int *A;

您可以在表达式中使用*A,它的类型为int,因此A必须是指向int的指针。

使用

int A[100];

您可以在表达式中使用A[i],它将具有类型int,因此A必须是int的数组。

但是您可以构造更复杂的声明:

使用

int (((A)));

您可以在表达式中使用(((A))),它的类型为int,因此A必须是int

使用

int *A[100];

您可以在表达式中使用*A[i],它的类型为int,因此A ...

  • 必须是数组...
  • 及其元素必须是指向int的指针

因此A必须是指向int的指针的数组。

类似地,

int (*A)[100];

您可以在表达式中使用(*A)[i],它的类型为int,因此A ...

  • 必须是一个指针...
  • 指向的对象必须是int的数组

因此A必须是指向int数组的指针。


这就是“ 变量声明的语法模仿表达式的语法”的含义:声明变量时,您编写了一种类型为mini-expression的结果类型为给定,并通过向后推理,可以推断出要声明的变量的类型。