1.传数组整体
格式:
(1)给函数传参时,用数组名arr;
(2)函数定义时,用int arr[3][5]接收;
(3)在函数中打印元素时,用arr[1][1]。
void test(int arr[3][5]) {
printf("%d", arr[1][1]);
}
int main() {
int arr[3][5] = { {1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7} };
test(arr);
return 0;
}
2.传首元素地址
二维数组的首元素地址为第一行数组的指针(把二维数组看作元素为一维数组的一维数组)
格式:
(1)给函数传参时,用数组名arr;
(2)函数定义时,用int (*p)[5]接收,表示传过来的是数组指针;
(3)在函数中打印元素时,用(*(p+1))[1]或者(*(*(p + 1)) + 1)。
void test(int (*p)[5]) {
printf("%d\n", (*(p+1))[1]); //p+1表示第二行数组的地址,*(p+1)表示第二行数组,(*(p+1))[1]表示第二行数组的第二个元素
printf("%d\n", *(*(p + 1) + 1)); //同理,*(p+1)表示第二行数组,即第二行数组的首元素地址,*(p + 1) + 1,表示第二行数组的第二个元素的地址,*(*(p + 1) + 1)表示第二行数组的第二个元素
}
int main() {
int arr[3][5] = { {1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7} };
test(arr);
return 0;
}