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