接收多维数组的函数,可以省略相当于开头下标的n维的元素个数。但是,(n - 1)维之下的元素个数必须是常量。
以下是接收一维、二维、三维数组的参数的声明示例:
void func1(int v[], int n); //元素类型为int、元素个数随意(n)。
void func2(int v[][3], int n); //元素类型为int[3]、元素个数随意(n)。
void func3(int v[][2][3], int n); //元素类型为int[2][3]、元素个数随意(n)。
注:所接收的数组的元素类型必须固定,但元素个数是自由的。
#include<stdio.h>
//将v赋值给元素类型为int[3]、元素个数为n的数组m的所有构成元素
void fill(int m[][3],int n,int v)
{
int i,j;
for(i = 0;i < n;i++)
for(j = 0;j < 3;j++)
m[i][j] = v;
}
//显示元素类型为int[3]、元素个数为n的数组m的所有构成元素
void mat_print(const int m[][3],int n)
{
int i,j;
for(i = 0;i < n;i++){
for(j = 0;j < 3;j++)
printf("%4d",m[i][j]);
putchar('\n');
}
}
int main()
{
int no;
int x[2][3] = {0}; //2行3列:元素类型为int[3]、元素个数为2
int y[4][3] = {0}; //4行3列:元素类型为int[3]、元素个数为4
printf("赋给所有构成元素的值:");
scanf("%d",&no);
fill(x,2,no);
fill(y,4,no);
printf("---x---\n"); mat_print(x,2);
printf("---y---\n"); mat_print(y,4);
return 0;
}