在C语言中,向函数传递二维数组有几种方式,这主要取决于二维数组的大小是否已知。下面是几种常见的方式:
1)如果二维数组的大小已知,那么你可以在函数参数中直接指定数组的大小。例如: void func(int arr[10][10]) { ... } 在这个例子中,func函数接受一个10x10的二维数组作为参数。
2)如果二维数组的第一维的大小未知,但是第二维的大小已知,那么你可以只指定第二维的大小。例如: void func(int arr[][10], int size) { ... } 在这个例子中,func函数接受一个二维数组作为参数,数组的第二维的大小是10,第一维的大小是size。
3)如果二维数组的大小完全未知,那么你可以将其视为一个指针的指针。例如: void func(int **arr, int rows, int cols) { ... } 在这个例子中,func函数接受一个指针的指针作为参数,然后使用rows和cols参数来获取数组的大小。
需要注意的是,如果你选择使用指针的指针来表示二维数组,那么你需要使用动态内存分配(例如malloc或者calloc函数)来创建二维数组,并在使用完后使用free函数来释放内存。
int sum2DArray(int **arr, int *start, int *end) { int sum = 0; // int *p = *arr; int *p = NULL; p = start; while (p < end) { sum += *p; p++; } return sum; } void main(){ int arr1[3][4] = {0}; int arr2[3][4] = {0}; int arr3[3][4] = {0}; for (i = 0; i < 3; i++) { for (j = 0; j < 4; j++) { arr1[i][j] = i + j; arr2[i][j] = i - j; arr3[i][j] = i * j; } } int *ptr_arr_start = &arr2; int *ptr_arr_end = &arr2 + 1; sum = sum2DArray(arr2, ptr_arr_start, ptr_arr_end); }
标签:arr,func,int,矩阵,二维,中向,arr2,数组 From: https://www.cnblogs.com/dogingate/p/17859105.html