// 变长数组参数,size参数必须在数组参数之前 intprocess_vla(int size, int arr[size]) { int sum = 0; for (int i = 0; i < size; i++) { sum += arr[i]; } return sum; }
// 多维变长数组 intprocess_2d_vla(int rows, int cols, int matrix[rows][cols]) { int sum = 0; for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { sum += matrix[i][j]; } } return sum; }
4. 数组字面量作为参数
C
1 2
// 可以直接传递数组字面量 int sum = sum_array((int[]){1, 2, 3, 4, 5}, 5);
九、实际应用示例
示例1:查找数组中的最大值
C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#include<stdio.h>
intfind_max(int arr[], int size) { int max = arr[0]; for (int i = 1; i < size; i++) { if (arr[i] > max) { max = arr[i]; } } return max; }
intmain() { int numbers[] = {23, 45, 12, 67, 89, 34}; int max_value = find_max(numbers, 6); printf("最大值:%d\n", max_value); return0; }
voidtranspose_matrix(int rows, int cols, int src[rows][cols], int dest[cols][rows]) { for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { dest[j][i] = src[i][j]; } } }
voidprint_matrix(int rows, int cols, int matrix[rows][cols]) { for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { printf("%d ", matrix[i][j]); } printf("\n"); } }
intmain() { int original[2][3] = { {1, 2, 3}, {4, 5, 6} }; int transposed[3][2];