modality:形式,形态 fact:实际,事实 parameter:参数,参量
01 #include <stdio.h>
02 #include <string.h>
03 #define N 10 /*宏定义*/
04 int max,min; /*全局变量*/
05 void main()
06 {
07 void max_min_value(int *array,int n); /*函数原型(声明)*/
08 int array[N],*p;
09 printf("Enter %d numbers:",N);
10 for(p=array;p<array+N;p++) /*array+N,数组中最末元素之后的一个指针地址*/
11 scanf("%d",p);
12 printf("Source data:");
13 for(p=array;p<array+N;p++)
14 printf("%4d",*p);
15 max_min_value(array,N); /*fact parameter,transfer function "max_min_value"*/
16 printf("/nmaxdata:%d mindata:%d/n",max,min);
17 }
18
19 void max_min_value(int *array,int n) /*modality parameter*/
20 {
21 int *p,*array_end;
22 max=min=*array;
23 array_end=array+n; /*数组中最后一个元素之后的一个指针地址*/
24 for(p=array+1;p<array_end;p++)
25 if(*p>max) max=*p;
26 else if(*p<min) min=*p;
27 return 0; /*此语句可要可不要*/
28 }
第15行中的(array,N)为实参,第19行中的(int *array,int n)为形参。
实参A. p=array; 实参B. ……
1 max_min_value(p,N); max_min_value(array,N);
形参A. void max_min_value(int *array,int n) 形参B. void max_min_value(int array[],int n)
实参C. …… 实参D. p=array;
1 max_min_value(array,N); max_min_value(p,N);
形参C. void max_min_value(int *array,int n) 形参D. void max_min_value(int array[],int n)
1、实/形参A中的实参(fact parameter)和形参(modality parameter)均为指针变量;
2、实/形参B中的实参(fact parameter)和形参(modality parameter)均为数组名;
3、实/形参C中的实参(fact parameter)为数组名,形参(modality parameter)为指针变量;
4、实/形参D中的实参(fact parameter)为指针变量,形参(modality parameter)为数组名;
以上四种实/形参搭配关系可通过自定义函数来改变实参数组中的元素值,(实参在前,形参在后)可简记为数组—数组、指针—指针、数组—指针、指针—数组。