C语言数组与函数 #

一、一维数组作为参数 #

1.1 基本语法 #

c
void func(int arr[], int size);
void func(int* arr, int size);

两种写法等价。

1.2 使用示例 #

c
#include <stdio.h>

int sum(int arr[], int size) {
    int total = 0;
    for (int i = 0; i < size; i++) {
        total += arr[i];
    }
    return total;
}

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int size = sizeof(arr) / sizeof(arr[0]);
    printf("总和: %d\n", sum(arr, size));
    return 0;
}

二、数组传参特点 #

2.1 退化为指针 #

c
#include <stdio.h>

void print_size(int arr[]) {
    printf("函数内sizeof: %zu\n", sizeof(arr));
}

int main() {
    int arr[5] = {1, 2, 3, 4, 5};
    printf("main中sizeof: %zu\n", sizeof(arr));
    print_size(arr);
    return 0;
}

数组作为参数时退化为指针。

2.2 可以修改原数组 #

c
#include <stdio.h>

void double_values(int arr[], int size) {
    for (int i = 0; i < size; i++) {
        arr[i] *= 2;
    }
}

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int size = sizeof(arr) / sizeof(arr[0]);
    
    double_values(arr, size);
    
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
    return 0;
}

三、二维数组作为参数 #

3.1 指定列数 #

c
#include <stdio.h>

void print_matrix(int rows, int cols, int mat[rows][cols]) {
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            printf("%2d ", mat[i][j]);
        }
        printf("\n");
    }
}

int main() {
    int matrix[3][4] = {
        {1, 2, 3, 4},
        {5, 6, 7, 8},
        {9, 10, 11, 12}
    };
    print_matrix(3, 4, matrix);
    return 0;
}

3.2 使用行指针 #

c
void print_matrix(int (*mat)[4], int rows);

四、总结 #

类型 参数写法
一维数组 int arr[] 或 int* arr
二维数组 int mat[][cols] 或 int (*mat)[cols]

下一步,让我们学习函数!

最后更新:2026-03-26