如何用 C 语言将数组传递给函数
原文:https://www.studytonight.com/c/array-in-function-in-c.php
每当我们需要将一个元素列表作为参数传递给 C 语言中的任何函数时,最好使用array
来实现。但是我们如何将数组作为参数传递给函数呢?让我们看看它是如何完成的。
用数组作为参数声明函数
有两种可能的方法,一种是使用按值调用,另一种是使用按引用调用。
我们可以有一个数组作为参数。
int sum (int arr[]);
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