有这样一个程序,在main函数中通过调用子程序min,求出一数组中的最小元素值:
#inlude <stdio.h>
int main()
{
int a[7] = {-1, 9, 7, 3, -100, 0, 8};
int minvalue;
minvalue = min(a, 7);
printf("minvalue = %d", minvalue);
return 0;
}
int min(int *p, int n)
{
int i, minvalue;
minvalue = *p;
for (i = 1; i < n; i++)
{
if (*(p+i) < minvalue)
minvalue = *(p+i);
}
return(minvalue);
}
当min被调用时,将数组a的地址赋值给指针p,也就是说,p时指向数组a的指针。这样,有a[i]==*(p+i),就可以用指针p来间接引用数组a中的元素。
min函数的头还可以写成:
int min(int p[], int n)
这样,在外在形式上与main函数中的调用形式一致,但须注意,形式上为p[ ]数组,但C语言中实际上是以指针方式来处理p的。