C-函数和数组
在本教程中,我们将学习如何使用C编程语言在函数中传递和使用数组。
我们知道,当我们要使用一个变量名称存储相同数据类型的数据时,我们会使用数组。
函数声明以接受一维数组
要接受一维数组,我们的函数声明将如下所示。
returnType functionName(type arr[], type size);
例:
float findAverage(int arr[], int size);
在上面的函数声明中,我们有一个名为findAverage的函数。
第一个参数的类型为" int",并采用一维整数数组。
类型为int的第二个参数用于表示数组的大小,即元素数。
此函数的返回类型设置为float,因此它将返回浮点值。
将一维数组传递给函数
要传递一维数组,我们只需将数组变量的名称写为函数参数即可。
例如,如果我们要在5篇论文中存储一个学生的成绩,则可以创建一个大小为5的整数数组,然后执行" int",并为其命名,例如"分数"。
int score[5] = {90, 80, 70, 75, 85};
注意!在上面的示例中,我们假设每篇论文的总分是100,而分数将是一个整数值。
现在说,我们想通过创建一个函数" findAverage()"来找到学生的平均分数,该函数采用一个整数数组并返回一个浮点值。
在下面的示例中,我们将类型为" int"且名称为" score"的一维数组传递给" findAverage()"函数。
int score[5] = {90, 80, 70, 75, 85};
int papers = 5;
float avg = findAverage(score, papers);
完整的代码如下。
#include <stdio.h>
float findAverage(int [], int);
int main(void) {
int score[5] = {90, 80, 70, 75, 85};
int papers = 5;
float avg = findAverage(score, papers);
printf("Average: %f\n", avg);
return 0;
}
float findAverage(int arr[], int size) {
//variables
int
i;
float
sum = 0,
avg = 0;
//find total
for (i = 0; i < size; i++) {
sum += arr[i];
}
//find average
avg = sum/size;
//return average
return avg;
}
Average: 80.000000
接受二维数组的函数声明
要接受二维数组,我们的函数声明将如下所示。
returnType functionName(type arr[][C], type rows, type cols);
例:
void printAverage(int arr[][C], int rows, int cols);
在上面的示例中,我们有一个名为printAverage的函数。
第一个参数是一个二维数组,因为我们使用两个方括号来表示行数和列数。
重要的是指定第二维的大小,即列数。
因此,在上面的函数声明中,我们传递了一个常量C。
第二个和第三个参数" int rows"和" int cols"分别表示数组" arr"中的行数和列数。
上面的函数没有返回任何值,因此,返回类型设置为void。
将二维数组传递给函数
要将二维数组传递给函数,我们要做的就是编写数组名称。
假设某位学生每天进行3次测试,共5天,我们希望打印出每天的平均分数。
因此,我们将首先创建一个二维数组,假设为" score",它将有5行表示5天,有3列表示3个测试。
int score[5][3] = {
{60, 70, 80},
{90, 50, 70},
{80, 75, 75},
{90, 85, 81},
{60, 75, 80}
};
因此,如果我们要将二维数组score传递给函数printAverage,我们必须编写以下内容。
printArray(score, ROWS, COLS);
完整的代码如下所示。
#include <stdio.h>
void printAverage(int [][3], int, int);
int main(void) {
//variables
int
ROWS = 5,
COLS = 3;
int score[5][3] = {
{60, 70, 80},
{90, 50, 70},
{80, 75, 75},
{90, 85, 81},
{60, 75, 80}
};
printAverage(score, ROWS, COLS);
return 0;
}
void printAverage(int arr[][3], int rows, int cols) {
//variables
int
r, c;
float
sum, avg;
//find average and print it
for (r = 0; r < rows; r++) {
sum = 0;
for (c = 0; c < cols; c++) {
sum += arr[r][c];
}
avg = sum/cols;
printf("Average on Day #%d = %f\n", (r + 1), avg);
}
}
Average on Day #1 = 70.000000 Average on Day #2 = 70.000000 Average on Day #3 = 76.666664 Average on Day #4 = 85.333336 Average on Day #5 = 71.666664

