數組名可以作函數的實參和形參。如:
#include<stdio.h> int main(void) { int array[10]; f(array,10); } f(int arr[],int n) { }
array爲實參數組名,arr爲形參數組名。在學習指針變量之後就更容易理解這個問題了。數組名就是數組的首地址,實參想形參傳送數組名市級上就是傳送數組的地址,形參得到改地址後也指向同一數組。這就好像同一件物品有倆個彼此不同的名稱一樣。
同樣,指針變量的值也是地址,數組指針變量的值即爲數組的首地址,當然也可作爲函數的參數使用。
#include<stdio.h> float aver(float *pa);//ANSI函數原型 int main(void) { float sco[5],av,*sp; //定義了一個長度爲5的浮點型數組,一個浮點型變量,指針變量。 int i; //定義整形變量I用於循環。 sp=sco; //指向數組 printf("\ninput 5 scores:\n"); //打印 for(i=0;i<5;i++) //給數組賦值 { scanf("%f",&sco[i]); } av=aver(sp); //變量賦值 函數返回值 printf("average score is %5.2f",av); //打印 system("pause"); //暫停 } float aver(float *pa) //聲明一個 形參爲 浮點型指針變量的函數 { int i; //整形變量I用於循環 float av,s=0; //浮點型變量 av S for(i=0;i<5;i++) //for循環給變量賦值 { s=s+*pa++; } av=s/5; //求出平均數 return av; }
將數組a中的N個整數按相反順序存放。
算法爲:將a[0]與a[n-1]對換,再a[1]與a[n-2]對換。。。。,知道將a(n-1/2)與a[n-int((n-1)/2)]對換,現在用循環處理此問題,設倆個“位置指示變量”i和j,i的初值爲0,j的初值爲n-1.將a[i]與a[j]交換,然後使得i的值加1,j的值減1,再將a[i]與a[j]交換,直到i=(n-1)/2爲止,如圖所示。