用指针变量代替数组名作为函数的参数时,一般有以下两种情况:
(1)指针变量可以作为函数的形参
(2)指针变量可以作为函数的实参
其中,实参与形参使用的对应关系有如下。
(1)形参和实参都可以作为数组名。例如:
void f(int x[], int n)
{...}
void main()
{
int a[10];
...
f(a,10);
...
}
其中a和x是数组,传递的是a数组的首地址,即把实参数组的首地址传递给形参数组首地址。a和x数组共用一段内存单元,即在调用期间,a和x指的是同一个数组。
(2)实参用数组名,形参用指针变量,例如:
void f(int * p,int n)
{..}
coid main()
{
int a[10];
...
f(a,10);
...
}
其中实参a为数组名,形参p为指向整型变量的指针变量,即把实参数组首地址传递给形参(指针变量),函数中用指针访问实参数组。函数开始执行时,p指向a[0】,即p = &a[0]。通过p的值改变,可以指向a数组中的任一个元素。