第八章 数组
1 在进行函数形参的传递中,数组名和指针式同等的,但是指针是最正确的方式。
2 关于数组的初始化问题,首先要明确数组初始化的位置,是在函数的内部(包括main函数)还是在函数的外部,在函数外部声明时,即使没有初始化,它也有自己的初值,就是0,要是在函数背部的话,只就有可能不是0,是其他的数字。另外,在函数内部的时候,由于是自动变量,它是位于堆栈中的位置,每次程序执行到该函数时,都会进行重新初始化,因此对于函数内部 的数组,我门可以在之前加上static关键字,使得它只进行一次初始化。
3 关于有时候形式参数会被声明为一个指向const变量的指针有什么重要的意义问题。首先,这是一个良好的文档习惯,有些人希望仅观察该函数的原型就能发现该数据不会被修改,而不必阅读完整的函数定义。其次,编译器可以捕捉到任何试图修改该数据的错误。第三,这类声明允许向函数传递const参数。
4 数组的初始化中,只允许省略数组的最后几个初始值。
5 编译器会自动计算数组的长度。
6 char message[]="hello";
char *message1="hello";
7 二维数组很重要,意义很重大。
8 int (*p)[10];这是定义一个指向数组的指针,但是绝对不能讲维数省略!。
9 当然也可以定义一个指向整形参数的指针,int *pi =&a[0][0] 或者 int *pi=a[0];。
10 数组名的值实际上是指向数组第一个元素的指针。这个规则两个例外。其一,sizeof(),其二,&操作符返回一个指向数组的指针。
11 定义指针数组时,可以在最后加上NULL,来判断数组的结束,从而不用显示的写出数组的大小。
12 在多维数组的定义下,通常第一维的大小能够省略。
13 数组形参能够生命为数组,或者是指针。