int a[10];
int * p;
in i;
p=a;
1. 数组名a代表数组首元素的地址,它是一个指针常量,它的值在程序运行期间是固定不变的。
2. “p=a”的作用是将数组a的首元素的地址赋给指针变量p。
3. 引用一个数组,可以用下标法,如a[i]或p[i],也可以用指针法,如*(p+i)或*(a+i)。
4. [ ]实际上是变址运算符,即将a[i]按a+i计算出地址,然后找出此地址单元中的值。
5. 使用指针法能使目标程序质量高(占用内存少,运行速度快)。
6. *(p++):先取 *p 的值,再使 p 加1,相当于 a[i++]
*(++p): 先使 p 加1,再取 *p,相当于 a[++i]
++(*p): 先取 *p 的值,再使 *p 的值加1,相当于 a[i]++
7. voidfun(int arr[]) 相当于 void fun(int *arr) ,C编译都是将形参数组名作为指针变量来处理的。
8. 实参和形参组合共有四种:分别是,都用数组名;都用指针变量;实参用数组名,形参用指针变量;实参用指针变量,形参用数组名;但本质上都一样,都是使用指针变量。
9. 实参数组名代表一个固定的地址,是指针常量,但形参数组是作为指针变量,在函数调用开始时,它的值等于实参数组首元素的地址,在函数执行期间,他可以在被赋值。
10. 如果指针变量作实参,必须先使指针变量有确定的值,指向一个已定义的单元。
《C语言程序设计》