引入例子
# include<stdio.h>
# define N 3
int main(){
void show(int arr[N][N]);
int a[N][N] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
show(a);
return 0;
}
void show(int arr[N][N]){
int i = 0, j = 0;
for(i = 0; i < N; i++)
for(j = 0; j < N; j++)
printf("%d\t",arr[i][j]);
}
当主函数位于调用函数之上时函数声明是必要的,有时候会甚至会报错
二维数组作为函数形参的写法
- 指定数组行数和列数
void show (int arr[N][N]);
- 指定数组列数
void show(int arr[][N]);
这是因为当列数确定了,根据传入的参数,行数便唯一确定了
3. 指针类型
void show(int (*arr)[N]);
这种形式的声明参数是一个指针,它指向具有N个元素的一维数组。因为[]的优先级比*的优先级高,故*array必须用括号括起来
二维数组作为函数实参的写法
show(a);
和一维数组一样传入数组名即可