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