美文网首页
关于二维数组传参做形参

关于二维数组传参做形参

作者: 且听风吟淡漠一生 | 来源:发表于2017-12-09 22:06 被阅读0次

    可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明,如:

    void Func(int array[3][10]);

    void Func(int array[][10]);

    例2 将二维数组依旧当作二维数组来处理

    下面是一个字符串数组的参数传递程序,实现将字符串数组中的字符串按照从小到大的顺序进行排序:

    //WordSort实现了对5个字符串的排序

    #include "stdio.h"

    #include "stdlib.h"

    #include "string.h"

    void WordSort(char p[][10],int RowSize)

    {

    int n=0,m;

    char temp[10];

    for(n=0;n

    for(m=n+1;m

    if( strcmp(p[m],p[n]) < 0 )

    {

    strcpy(temp,p[n]);

    strcpy(p[n],p[m]);

    strcpy(p[m],temp);

    }

    for(n=0;n<5;++n)

    printf("In subfunction:%s\n",p[n]);

    }

    void main()

    {

    int k=0;

    char word[5][10];

    for(;k<5;++k)

    scanf("%s",&word[k]);

    WordSort(word,5);

    printf("sorted word:\n");

    for(k=0;k<5;k++)

    printf("In main function:%s\n",word[k]);

    system("pause");

    }

    例3 用“行指针”传递参数

    运行下面程序:

    /************************************/

    //二维数组作为形参的参数传递方式之一

    /************************************/

    #include

    void print_array_1(int (*a)[3], int Row_Size)

    {

    int j;

    for(j=0;j<3*Row_Size;j++)

    {

    printf("%d ",(*a)[j]);

    if(j%3==2) printf("\n");

    }

    }

    void print_array_2(int (*a)[3], int Row_Size)

    {

    int i,j;

    for(i=0;i

    {

    for(j=0;j<3;j++)

    printf("%d ",*(*(a+i)+j));

    printf("\n");

    }

    }

    void main()

    {

    int i,j,value=0;

    int a[4][3]={0};

    for(i=0;i<4;i++)

    for(j=0;j<3;j++)

    a[i][j]=value++;

    print_array_1(a,4);

    printf("\n");

    print_array_2(a,4);

    }

    相关文章

      网友评论

          本文标题:关于二维数组传参做形参

          本文链接:https://www.haomeiwen.com/subject/dwgpixtx.html