1.在C中,在几乎所有使用数组名的表达式中, 数组名的值是一个指针常量(所以不能更改),也就是数组第一个元素的地址,但是数组具有一些和指针完全不同的特征
2.在如下场合下,数组名并不用指针常量表示:
当数组名作为sizeof操作符或单目操作符&的操作数时
3.2[array]=array[2],通过理解下标的实现方式即可明白该表达式是正确的
4.下标和指针的效率问题,可以得出以下总结:
当你根据某个固定数目的增量在一个数组中移动时,使用指针变量将比使用下标产生效率更高的代码
声明为寄存器变量的指针通常比位于静态内存和堆栈中的指针效率更高
如果你可以通过测试一些已经初始化并经过调整的内容来判断循环是否应该终止,那么你就不需要使用一个单独的计数器
那些必须在运行时求值的表达式较之诸如&array[SIZE]或array+SIZE这样的常量表达式往往代价更高
5.关于printf()执行从右往左 如:
printf("%d %d\n",*++p,*p);先执行*p然后再执行*++p
6.matrix[3,4]=matrix[4],因为逗号操作符首先对第一个表达式求值,然后丢弃这个值,最后的结果是第二个表达式的值
7.如何声明指向数组的指针,并注意当多维数组名作为参数时,函数原型该如何写,常犯的错误 func(int **mat)