C语言设计

第38章


将函数 inv 中的形参 x 改成指针变量。
【例 10.17】对例 10.16 可以作一些改动。将函数 inv 中的形参 x 改成指针变量。
程序如下:
void inv(int *x,int n)   /*形参x为指针变量*/
{
 int *p,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,a[10]={3,7,9,11,0,6,7,5,4,2};
 printf("The original array: ");
 for(i=0;i<10;i++)
   printf("%d,",a[i]);
 printf(" ");
 inv(a,10);
谭浩强      C 语言程序设计               2001 年 5 月 1 日
 printf("The array has benn inverted: ");
 for(i=0;i<10;i++)
  printf("%d,",a[i]);
 printf(" ");
}
运行情况与前一程序相同。
【例 10.18】从 0 个数中找出其中最大值和最小值。
调用一个函数只能得到一个返回值,今用全局变量在函数之间“传递”数据。程序如下:
int max,min;      /*全局变量*/
void max_min_value(int array[],int n)
{int *p,*array_end;
 array_end=array+n;
 max=min=*array;
 for(p=array+1;pmax)max=*p;
   else if (*pmax)max=*p;
   else if (*px[k])k=j;
    if(k!=i)
    {t=x[i];x[i]=x[k];x[k]=t;}
    }
}
说明:函数 sort 用数组名作为形参,也可改为用指针变量,这时函数的首部可以改为:
sort(int *x,int n) 其他可一律不改。
10.3.4 指向多维数组的指针和指针变量
本小节以二维数组为例介绍多维数组的指针变量。
1. 多维数组的地址
设有整型二维数组 a[3][4]如下:
0   1   2   3
    4   5   6   7
8   9  10  11
它的定义为:
int a[3][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11}}
设数组 a 的首地址为 1000,各下标变量的首地址及其值如图所示。
小说推荐
返回首页返回目录