數組作為函數參數


數組可以作為函數的參數使用,進行數據傳送。數組作為函數參數有兩種形式。

(1)把元素作為實參使用。

(2)把數組名作為函數的形參和實參使用。

1、數組元素作為函數實參

數組元素就是下標變量,它與普通變量並無區別。因此它作為函數實參使用與普通變量是完全相同的,在發生函數調用時,把作為實參的數組元素的值傳遞給形參,實現單向的值傳遞。

例:判別一個整數數組a[10]={1,2,3,4,-1,-2,-3,-4,2,3}中個元素的值,若大於0,則輸出該值,若小於等於0,則輸出0。

#include <stdafx.h>
#include<stdio.h>

void test(int v);
void main()
{
    int a[10]={1,2,3,4,-1,-2,-3,-4,2,3};
    int i;
    for(i=0;i<=10;i++)
    {
        test(a[i]);
    }
    printf("\n");
}
void test(int v)
{
    if(v>0)
    {
        printf("%d\n",v);
    }
    else
    {
        printf("0\n");
    }
}

2、數組名作為函數參數

注:(1)與數組元素作為函數參數不同的是,用數組名作為函數參數時,要求形參與相對應的實參都必須是類型相同的數組,否則會發生錯誤。

(2)用數組名作為函數參數時,並不是進行值的傳遞,即不是把實參數組的每一個元素的值都賦與形參數組的各個元素。因為實際上形參數組並不存在,編譯系統並不為形參數組分配內存。

數據的傳遞:數組名就是數組的首地址。因此在數組名作為函數參數時所進行的傳遞只是地址的傳遞,也就是說把實參數組的首地址賦予形參數組名。形參數組名取得該首地址之后,也等於有了實際的數組,即實參與形參有一段共用的內存空間。

例:

#include <stdafx.h>
#include<stdio.h>

void test (int b[10]);
void main()
{
    int a[10]={2,4,6,8,10,12,14,16,18,20};
    test(a);
    putchar('\n');
}
void test (int b[10])
{
    int i=0;
    for(;i<10;i++)
    {
        printf("%6d",b[i]);
    }
}

例:有一個一維數組score,內放10個學生成績,求平均成績。(寫一個average函數獲取平均成績)。

#include <stdafx.h>
#include<stdio.h>

double average(double array[10]);/*函數聲明*/
void main()
{
    double score[10]={82,100,55,80,64,78,26,65,36,85},result;
    result=average(score);
    printf("%lf\n",result);
}

double average(double array[10])
{
    int i;
    double f=0;
    for(i=0;i<=9;i++)
    {
        f+=array[i];
    }
    f /= 10;
    return (f);
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM