Chinaunix首页 | 论坛 | 博客
  • 博客访问: 373063
  • 博文数量: 57
  • 博客积分: 4020
  • 博客等级: 上校
  • 技术积分: 647
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-17 15:57
文章分类

全部博文(57)

文章存档

2009年(22)

2008年(35)

我的朋友

分类: C/C++

2008-06-01 16:31:17

C语言 指针学习笔记 4

数组名作函数参数

1.(用实参指针变量改写)将n个整数按相反顺序存放。

程序如下:

Author:yuexingtian

Date:Sunday, June 01, 2008

/*(用实参指针变量改写)将n个整数按相反顺序存放*/

 

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]={1,2,3,4,5,6,7,8,9,10},*p;

 

 p=arr;

 

 printf("The original array:\n");

 

 for(i=0;i<10;i++,p++)

 

   printf("%d ",*p);

 

 printf("\n");

 

 p=arr;

 

 inv(p,10);

 

 printf("The array has benn inverted:\n");

 

 for(p=arr;p

 

  printf("%d ",*p);

 

 printf("\n");

 

 getch();

}

测试结果:

 

注意:

main函数中的指针变量p是有确定值的。即如果用指针变作实参,必须现使指针变量有确定值,指向一个已定义的数组。

 

 

 

2.(选择法)对10个整数从大到小排序。

程序如下:

/*用选择法对十个整数从大到小排序*/

 

main()

{

int *p,i,a[10]= {1,10,7,6,4,3,2,9,8,5};

 

 printf("The original array:\n");

 

 for(i=0;i<10;i++)

 

   printf("%d,",a[i]);

 

 printf("\n");

 

 p=a;

 

 sort(p,10);

 

printf("the max to min numbers is:\n");

 

for(p=a,i=0;i<10;i++)

 

  {printf("%d  ",*p);p++;}

 

 printf("\n");

 

getch();

}

 

sort(int x[],int n)

{

int i,j,k,t;

 

 for(i=0;i

 

   {

k=i;

 

    for(j=i+1;j

 

      if(x[j]>x[k])k=j;

 

    if(k!=i)

 

    {t=x[i];x[i]=x[k];x[k]=t;}

 

    }

 

}

测试结果:

 

说明:

函数sort用数组名作为形参,也可改为用指针变量,这时函数的首部可以改为:sort(int *x,int n) 其他可一律不改。

阅读(1247) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~