C语言如何用一个自定义函数打印一个二维数组

void print(int str[][],int n)
{
int i,j;
for(i=0;i<50;i++)
{
for(j=0;j<50;j++)
{
printf("%d",str[i][j]);
if(j=49)
printf("\n");
}

}
}

main里面调用。。
print(str,2500);

二维数组无法作为参数直接传递给函数,但是可以利用二维数组内部数据的连续性,将二维数组的地址按照一维数组的方式传递给函数,并传入对应的行列数,从而实现函数内打印二维数组的效果。

以整型为例,具体方式如下:

void print_array(int *a, int m, int n)//a为一个m行,n列的二维数组的首地址。
{
    int i, j;
    for(i = 0; i < m; i ++)
    {
        for(j = 0; j < n; j ++)
        {
            printf("%d,", a[i*n+j]);//a[i*n+j]也就是原始二维数组第i行第j列的元素。
        }
        printf("\n");//每行结束输出换行。
    }
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-03-29

难道这个代码有问题吗?我觉得是对的啊,不过我会这样:

void print(int str[][],int n)
{
int i,j;
for(i=0;i<50;i++)
{
for(j=0;j<50;j++)
printf("%d",str[i][j]);

}

本回答被网友采纳