关于传递二维数组,总结踩坑经验;
#include <stdio.h>
void print_2d_array(int **arr, int m, int n) {
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
printf(“%d “, arr[i][j]);
}
printf(”\n”);
}
}
int main() {
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
print_2d_array((int **)arr, 2, 3);
return 0;
}
这样做是不对的,是程序崩掉。
更不能
#include <stdio.h>
void print_2d_array(int **arr, int m, int n) {
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
printf(“%d “, arr[i][j]);
}
printf(”\n”);
}
}
int main() {
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
print_2d_array(arr, 2, 3);
return 0;
}
形参要开阔一个数组
void print_2d_array(int arr[2][3], int m, int n) {
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
printf(“%d “, arr[i][j]);
}
printf(”\n”);
}
}
int main() {
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
print_2d_array(arr, 2, 3);
return 0;
}