//用指向指针的指针给n个整数排序并输出
//将排序单独写成一个函数,n个整数从主函数输入,从主函数输出
#include <stdio.h>
void sort(int **p,int n);
int main()
{
int i,n,num[20],*pnum[20],**p;
printf("input the number(n):");
scanf("%d",&n);
for(i=0;i<n;i++)
{
pnum[i]=&num[i]; //pnum[i]是指向一维数组num[i]的指针
}
printf("input some numbers\n");
for(i=0;i<n;i++)
{
scanf("%d",pnum[i]);
}
p=pnum; //pnum的类型是int **point
sort(p,n);
for(i=0;i<n;i++)
printf("%d\t",*pnum[i]);
return 0;
}
void sort(int **p,int n)
{
int i,j,temp;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{
if(**(p+j)>**(p+i))
{
temp=**(p+j);
**(p+j)=**(p+i);
**(p+i)=temp;
}
}
}
再用指针对一个含有十个数的数组排序
#include <stdio.h>
#define N 10
void sort (int *p);
int main()
{
int num[N] ,i,*p;
printf("enter 10 numbers:");
for(i=0;i<10;i++)
{ scanf("%d",&num[i]); }
p=&num[0];
sort(p);
printf("the minmum num is %d",num[9]);
printf("\n");
printf("the maxmum num is %d",num[0]);
printf("\n");
return 0;
}
void sort (int *p)
{
int i,j,temp;
for(i=0;i<9;i++)
for(j=i+1;j<10;j++)
{
if(*(p+j)>*(p+i))
{
temp=*(p+j);
*(p+j)=*(p+i);
*(p+i)=temp;
}
}
}
对比记忆数组中的各种类型