【C语言练习】014. 使用数组作为函数参数
014. 使用数组作为函数参数
- 014. 使用数组作为函数参数
- 示例1:使用数组作为函数参数并修改数组元素
- 函数定义
- 输出结果
- 示例2:使用数组作为函数参数并计算数组的平均值
- 函数定义
- 输出结果
- 示例3:使用二维数组作为函数参数
- 函数定义
- 输出结果
- 示例4:使用动态分配的数组作为函数参数
- 函数定义
- 输出结果
014. 使用数组作为函数参数
在C语言中,数组作为函数参数时,实际上传递的是数组的首地址(即数组的第一个元素的地址)。这意味着函数内部对数组的修改会直接影响到原始数组。以下将通过具体示例展示如何使用数组作为函数参数,并在函数中处理数组。
示例1:使用数组作为函数参数并修改数组元素
函数定义
定义一个函数,用于将数组中的每个元素增加1。
#include <stdio.h>// 函数定义:将数组中的每个元素增加1
void incrementArray(int arr[], int size) {for (int i = 0; i < size; i++) {arr[i]++; // 修改数组元素}
}int main() {int arr[] = {1, 2, 3, 4, 5}; // 声明并初始化数组int size = sizeof(arr) / sizeof(arr[0]); // 计算数组的大小printf("Before incrementing:\n");for (int i = 0; i < size; i++) {printf("%d ", arr[i]);}printf("\n");// 调用函数并传递数组incrementArray(arr, size);printf("After incrementing:\n");for (int i = 0; i < size; i++) {printf("%d ", arr[i]);}printf("\n");return 0;
}
输出结果
Before incrementing:
1 2 3 4 5
After incrementing:
2 3 4 5 6
示例2:使用数组作为函数参数并计算数组的平均值
函数定义
定义一个函数,用于计算数组的平均值并返回结果。
#include <stdio.h>// 函数定义:计算数组的平均值
double calculateAverage(int arr[], int size) {int sum = 0;for (int i = 0; i < size; i++) {sum += arr[i]; // 计算总和}return (double)sum / size; // 返回平均值
}int main() {int arr[] = {1, 2, 3, 4, 5}; // 声明并初始化数组int size = sizeof(arr) / sizeof(arr[0]); // 计算数组的大小// 调用函数并接收返回值double average = calculateAverage(arr, size);printf("The average of the array elements is: %.2f\n", average);return 0;
}
输出结果
The average of the array elements is: 3.00
示例3:使用二维数组作为函数参数
函数定义
定义一个函数,用于打印二维数组的所有元素。
#include <stdio.h>// 函数定义:打印二维数组的所有元素
void printMatrix(int matrix[][4], int rows) {for (int i = 0; i < rows; i++) {for (int j = 0; j < 4; j++) {printf("%d ", matrix[i][j]);}printf("\n");}
}int main() {int matrix[3][4] = {{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12}}; // 声明并初始化二维数组// 调用函数并传递二维数组printMatrix(matrix, 3);return 0;
}
输出结果
1 2 3 4
5 6 7 8
9 10 11 12
示例4:使用动态分配的数组作为函数参数
函数定义
定义一个函数,用于将动态分配的数组中的每个元素增加1。
#include <stdio.h>
#include <stdlib.h>// 函数定义:将数组中的每个元素增加1
void incrementArray(int *arr, int size) {for (int i = 0; i < size; i++) {arr[i]++; // 修改数组元素}
}int main() {int size = 5;int *arr = (int *)malloc(size * sizeof(int)); // 动态分配数组if (arr == NULL) {printf("Memory allocation failed\n");return 1;}// 初始化数组for (int i = 0; i < size; i++) {arr[i] = i + 1;}printf("Before incrementing:\n");for (int i = 0; i < size; i++) {printf("%d ", arr[i]);}printf("\n");// 调用函数并传递动态分配的数组incrementArray(arr, size);printf("After incrementing:\n");for (int i = 0; i < size; i++) {printf("%d ", arr[i]);}printf("\n");// 释放动态分配的内存free(arr);return 0;
}
输出结果
Before incrementing:
1 2 3 4 5
After incrementing:
2 3 4 5 6