C---數組名作函數參數

數組名可以作函數的實參和形參。如:

#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爲止,如圖所示。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章