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

全部博文(57)

文章存档

2009年(22)

2008年(35)

我的朋友

分类: C/C++

2008-05-31 10:12:47

C语言 指针学习笔记 3

n个数中找出其中最大值和最小值。

调用一个函数只能得到一个返回值,今用全局变量在函数之间“传递”数据。程序如下:

Author:yuexingtian

Date:Thursday May 30, 2008

/*数组名作函数参数*/

 

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;p

 

if(*p>max)max=*p;

 

else if(*p

 

return;

 

 }

 

 main()

{

  int i,number[10];

 

   printf("enter 10 integer numbers:\n");

 

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

 

   scanf("%d",&number[i]);

 

   max_min_value(number,10);

 

   printf("\nmax=%d\nmin=%d",max,min);

 

   getch();

}

 

测试结果:

说明:

1)       在函数max_min_value中求出的最大值和最小值放在maxmin中。由于它们是全局,因此在主函数中可以直接使用。

2)       函数max_min_value中的语句:

                                                           max=min=*array;

array是数组名,它接收从实参传来的数组numuber的首地址。

*array相当于*&array[0])。上述语句与 max=min=array[0];等价。

3)       在执行for循环时,p的初值为array+1,也就是使p指向array[1]。以后每次执行p++,使p指向下一个元素。每次将*pmaxmin比较。将大者放入max,小者放min

4)       函数max_min_value的形参array可以改为指针变量类型。实参也可以不用数组名,而用指针变量传递地址。

程序可改为:

 

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;p

 

   if(*p>max)max=*p;

 

   else if (*p

 

 return;

 

}

 

main()

 

{

int i,number[10],*p;

 

 p=number;             /*使p指向number数组*/

 

 printf("enter 10 integer numbers:\n");

 

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

 

   scanf("%d",p);

 

 p=number;

 

 max_min_value(p,10);

 

 printf("\nmax=%d\nmin=%d",max,min);

 

getch();

}

 

运行结果与前一个程序一样

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