如何用 C 语言将数组传递给函数

原文:https://www.studytonight.com/c/array-in-function-in-c.php

每当我们需要将一个元素列表作为参数传递给 C 语言中的任何函数时,最好使用array来实现。但是我们如何将数组作为参数传递给函数呢?让我们看看它是如何完成的。


用数组作为参数声明函数

有两种可能的方法,一种是使用按值调用,另一种是使用按引用调用。

  1. 我们可以有一个数组作为参数。

    int sum (int arr[]);
    
  2. Or, we can have a pointers in the parameter list, to hold the base address of our array.

    int sum (int* ptr);
    

    我们将在稍后研究指针时详细研究第二种方法。


从函数返回数组

我们不从函数中返回数组,而是返回一个指针,该指针保存要返回的数组的基址。但是我们必须确保函数结束后数组存在,即数组不是函数的本地数组。

int* sum (int x[])
{
    // statements
    return x ;
}

我们将在研究带数组的指针时讨论这个问题。


将数组作为参数传递给函数

现在让我们看几个例子,其中我们将把单个数组元素作为参数传递给函数,一维数组传递给函数,多维数组传递给函数。


将单个数组元素传递给函数

让我们编写一个非常简单的程序,在这里我们将在我们的main()函数中声明并定义一个整数数组,并将数组元素之一传递给一个函数,该函数将只打印元素的值。

#include<stdio.h>

void giveMeArray(int a);

int main()
{
    int myArray[] = { 2, 3, 4 };
    giveMeArray(myArray[2]);        //Passing array element myArray[2] only.
    return 0;
}

void giveMeArray(int a)
{
    printf("%d", a);
}

four


将完整的一维数组传递给函数

为了理解这是如何实现的,让我们编写一个函数来找出数组中所有元素的平均值并打印出来。

我们将只发送数组的名称作为参数,它只不过是数组起始元素的地址,或者我们可以说是起始内存地址。

#include<stdio.h>

float findAverage(int marks[]);

int main()
{
    float avg;
    int marks[] = {99, 90, 96, 93, 95};
    avg = findAverage(marks);       // name of the array is passed as argument.
    printf("Average marks = %.1f", avg);
    return 0;
}

float findAverage(int marks[])
{
    int i, sum = 0;
    float avg;
    for (i = 0; i <= 4; i++) {
        sum += marks[i];
    }
    avg = (sum / 5);
    return avg;
}

Ninety-four point six


将多维数组传递给函数

这里,我们将只传递数组的名称作为参数。

#include<stdio.h>

void displayArray(int arr[3][3]);

int main()
{
    int arr[3][3], i, j;
    printf("Please enter 9 numbers for the array: \n");
    for (i = 0; i < 3; ++i)
    {
        for (j = 0; j < 3; ++j)
        {    
            scanf("%d", &arr[i][j]);
        }
    }
    // passing the array as argument
    displayArray(arr);
    return 0;
}

void displayArray(int arr[3][3])
{
    int i, j;
    printf("The complete array is: \n");
    for (i = 0; i < 3; ++i)
    {
        // getting cursor to new line
        printf("\n");
        for (j = 0; j < 3; ++j)
        {       
            // \t is used to provide tab space
            printf("%d\t", arr[i][j]);
        }
    }
}

请为数组输入 9 个数字:1 2 3 4 5 6 7 8 9 完整的数组是:1 2 3 4 5 6 7 8 9