在C语言中,数组和矩阵通常作为指针传递给函数。这是因为在C语言中,数组和矩阵实际上是指针的别名。当你将数组或矩阵作为参数传递给函数时,实际上是将其基址传递给函数。
以下是一个示例,说明如何将数组和矩阵作为指针传递给函数:
#include<stdio.h>
// 函数原型声明
void print_array(int *arr, int size);
void print_matrix(int *matrix, int rows, int cols);
int main() {
int arr[] = {1, 2, 3, 4, 5};
int matrix[][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int arr_size = sizeof(arr) / sizeof(arr[0]);
int matrix_rows = sizeof(matrix) / sizeof(matrix[0]);
int matrix_cols = sizeof(matrix[0]) / sizeof(matrix[0][0]);
print_array(arr, arr_size);
print_matrix(matrix, matrix_rows, matrix_cols);
return 0;
}
// 打印数组的函数
void print_array(int *arr, int size) {
for (int i = 0; i< size; i++) {
printf("%d ", *(arr + i));
}
printf("\n");
}
// 打印矩阵的函数
void print_matrix(int *matrix, int rows, int cols) {
for (int i = 0; i< rows; i++) {
for (int j = 0; j< cols; j++) {
printf("%d ", *(matrix + i * cols + j));
}
printf("\n");
}
}
在这个示例中,我们定义了两个函数:print_array
和 print_matrix
。这两个函数都接受指向数组和矩阵的指针作为参数,并打印它们的元素。
在 main
函数中,我们定义了一个数组 arr
和一个矩阵 matrix
。我们计算它们的大小,并将它们传递给相应的打印函数。
注意,在 print_matrix
函数中,我们使用了一个公式 *(matrix + i * cols + j)
来访问矩阵中的元素。这个公式将行和列组合成一个线性的索引,从而允许我们使用指针访问矩阵中的元素。
领取专属 10元无门槛券
手把手带您无忧上云