多维数组的传递

接收多维数组的函数,能够省略至关于开头下标的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)。 

注:所接收的数组的元素类型必须固定,但元素个数是自由的。spa

 

代码示例:为n行3列的二维数组的全部构成元素赋上一样的值

#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; }

 

相关文章
相关标签/搜索