8-8. 声明器

  • 学习人数 30K+
  • 适合所有人群学习
avatar
林耿亮

你好编程主讲老师

1.什么是声明器

指针与多维数组那一节中,我们讨论了声明一个数组与指针的通用公式。

声明数组与指针的通用公式

声明数组与声明指针的区别

现在我们声明两个数组A、B。根据它们的声明来展开对声明的讨论。

声明数组A

数组A,它有10个元素,每个元素为int类型。

  1. 元素类型:int
  2. 数组名:A
  3. 元素个数:10

按照公式,我们写出如下形式的声明:

int A[10];

声明数组B

数组B,它有5个元素,每个元素为int [10]类型的数组。

  1. 元素类型:int[10]
  2. 数组名:B
  3. 元素个数:5

按照公式,我们写出如下形式的声明:

int[10] B[5];

接下来,把元素类型中的方括号移动到最右边。

int B[5][10];

这样我们就写好了这两个数组的声明了。

数组A的声明为:int A[10] 数组B的声明为:int B[5][10]

像这种提供标识符类型信息,用于声明一个标识符的语法被称作声明器

2.声明与使用形式统一

现在,你肯定会有一个疑问,为什么在C语言中声明一个数组的写法会这么奇怪呢?

既然声明器由标识符类型信息组成。为什么不把它们分开写呢?像下面这样写不好吗?

数组A的声明为:int[10] A 数组B的声明为:int[5][10] B

前面是类型信息,后面是标识符。这样写看起来好像更加清晰明了。

但是,C语言中并未采用这样写法的是有一个其他方面的考虑的。

C语言的设计者们希望:一个标识符的声明与使用的形式统一

那么,什么叫作声明与使用的形式统一呢?根据下面的三个例子,相信你立刻就能理解何为形式统一。

数组A的声明为:int A[10] 数组A的使用:int n = A[0]

数组B的声明为:int B[5][10] 数组B的使用:int n = B[1][2]

标识符id声明为:int *(*id)[4] 标识符id使用为:int n = *(*id)[0]

标识符声明中的方括号内填数组长度,而标识符使用中的方括号内填元素下标。 标识符使用的表达式最终结果的类型与声明的最左边的类型一致。

这样看来,是不是声明器语法还是有法可依了呢。