C和指针

来源:互联网 发布:安卓手机彻底清除数据 编辑:程序博客网 时间:2024/06/06 03:01

第八章 数组

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 数组形参能够生命为数组,或者是指针。