例10.9 用实参指针变量改写例10.7。
void inv(int *x,int n)
 {intp,m,temp,*i,*j;
 m=(n-1)/2;
   i=x;j=x+n-1;p=x+m;
for(;i<=p;i++,j--)
   {temp=*i;*i=*j;*j=temp;}
return;

main()
   {int i,arr[10],*p=arr;
 printf("The original array:\n");
 for(i=0;i<10;i++,p++)
scanf("%d",p);
  printf("\n");
  p=arr;
  inv(p,10);/*实参为指针变量*/
  printf("The array has been inverted:\n");
for(p=arr;p<arr+10;p++)
printf("%d",*p);
  printf("\n");
  }
注意,上面的main函数中的指针变量p是有确定值的。如果在main函数中不设数组,只设指针变量,就会出错,假如把程序修改如下:
main()
{int i,arr;
printf("The oriGinal array:\n");
for(i=0;i<10;i++)
 scanf("%D",arr+i);
printf("\n");
   inv(arr,10);/*实参为指针变量,但未被赋值*/
printf("The array haS Been inverteD:\n");
for(i=0;i<10;i++)
  printf("%D",*(arr+i));
printf("\n");
   }
 编译时出错,原因是指针变量arr没有确定值,谈不上指向哪个变量。下面的使用是不正确的:
 main()f(x[ ],int n)
{int *p; {
f(p,n);

…}