C和指针学习笔记--第八章

1.只要有可能,函数的指针形式尽量声明成const

2.数组名是指针常量,只有在两种情况下,数组名不表示指针常量:

  1)数组名当做sizeof的参数的时候,返回整个数组的长度而不是指针长度。

  2)数组名当做&操作符的时候,返回一个指向数组第一个元素的指针。

3.下标绝对不会比指针更有效率,但指针有时候会笔下标更有效率。

4.数组和指针都可以与下标引用和间接访问操作符同时使用。除了优先级不同,[]和*相同,ap[1]与*(ap+1)等价。

5.优化程序关键是要先确定程序中哪些代码段占用了绝大部分的运行时间,然后集中精力于那部分代码上进行修改。

6.声明数组时,为数组的元素分配内存;声明指针时,只为指针本身分配内存。

7.数组形参既可以声明为数组也可以声明为指针,这两种形式在做函数的参数时等价,当在一个函数中调用sizeof求函数的形参数组的长度时,返回指针的大小,因为数组的元素本身没有在此函数作用域中分配内存,所以。通常在函数的形参中添加数组长度作为参数。

8.静态初始化只初始化一次,在文件载入到内存中准备执行时,初始化后的数组值和程序指令一样被载入到内存中,当程序执行时,静态初始化已经初始化完毕。

9.不完整初始化只允许省略最后几个值。

10.多维数组中的元素根据行主序进行存储,也就是最右边的下标率优先变化。

11.多维数组名的值是一个指向它第一个元素的指针,是一个指向数组的指针,对该数组名进行运算时根据数组长度对操作数进行调整。

12.当一个一维数组名作为参数传递给函数时,必须指明第二维和接下去所有维的长度,只有第一维的长度会被自动计算。