8.1 一维数组(P141)
8.1.1 数组名
数组名是一个指针常量,数组第一个元素的地址。
-
在两种情况下,数组名不用指针常量表示:
作为SIZEOF (返回整个数组长度)以及&操作数(一个指向数组的指针)时。(P142)
8.1.2 下标引用
- 下标引用和间接访问完全相同
array[]= *(array+[])
(P143) ap[] ap是一个指针
8.1.3 指针与下标(P144)
对下标表达式求值,需要取得括号值再与整型长度相乘。
指针可能运行时更有效率。
8.1.4 指针的效率
8.1.5 数组和指针(P150)
8.1.6 作为函数参数的数组名(P151)
8.1.7 声明数组参数
int strlen(char *string) = int strlen(char string[]);
函数原型中数组形参无需写明元素数目。
8.1.8 初始化(P152)
- 静态和自动初始化
静态数组是在程序执行之前链接器初始化。
自动变量在缺省下未初始化。
当数组初始化在一个函数(代码块)中,程序执行流都要重新初始化是不是值得。 static数组。
8.1.9 不完整的初始化
只可省略最后几个初始值。
8.1.10 自动计算数组长度
8.1.11 字母数组的初始化(P153)
8.2 多维数组(P154)
8.2.1 存储顺序
多维数组的元素存储顺序按照最右下标变化的顺序,即行主序。
8.2.2 数组名
一维数组名指向元素类型的指针。
int matrix[3][10]
matrix 是指向第一个包含10个整型元素的数组的指针。
8.2.3 下标(P156)
别忘了*(matrix+[])=matrix[]
8.2.4 指向数组的指针(P158)
int (*p)[10];
p指向整数数组
8.2.5 作为函数参数的多维数组(P159)
8.2.6 初始化
8.2.7 数组长度自动计算
只有第一维才可缺省提供。
8.3 指针数组(P163)
int *api[10];