注册 登录
编程论坛 数据结构与算法

求助!用指针变量作为参数定义一个函数,打印多个二维数组。

三角湖 发布于 2017-11-21 13:31, 1565 次点击
用指针变量作为参数定义一个函数,打印多个二维数组。
题目就是这样了,各位帮帮忙,谢谢!
2 回复
#2
九转星河2017-11-21 21:18
常规方法传参要知道一维大小~

程序代码:

#include<stdio.h>

#define SIZE(a) sizeof (a)/sizeof(*a)

void fun(int* ,size_t ,size_t );

int main( void )
{
    int a[2][2]=
    {
        {1,2},
        {3,4}
    };
   
    int b[3][4]=
    {
        {1,2,3,4},
        {5,6,7,8},
        {9,10,11,12}
    };
   
    fun((int* )a,SIZE(a),SIZE(*a));
    fun((int* )b,SIZE(b),SIZE(*b));
   
    return 0;
}

void fun(int* a,size_t i,size_t j)
{
    size_t k=0;
    size_t t=j+1;
   
    for (;k!=i*t;++k)
        printf((k%t)^j?"%-4d":"\n",a[j*(k/t)+k%t]);
}


还有另一种方法就是用动态数组处理(复杂点的就用平衡树来模拟多维数组——比较复杂有时效率较低不过却可以节省空间处理灵活)~



[此贴子已经被作者于2017-11-21 21:26编辑过]

#3
九转星河2017-11-21 21:43
然后刚刚学习了一种新写法~


    for (;k!=i*t;++k)
        printf("%-4d\0\n"+5*!(k%t^j),a[j*(k/t)+k%t]);
1