zoukankan      html  css  js  c++  java
  • 如何将多维数组作为参数传递给函数?(以二维数组为例)

    # define X (3)
    # define Y (5)

    int main() {
        int
            d[X][Y]={1,2,3,4,5,6,7,8};
        /*我想打印d[][]的内容*/
    }

    那么,我们一般会这样写:

    # define X (3)
    # define Y (5)

    int main() {
        int
            d[X][Y]={1,2,3,4,5,6,7,8};    /*我想打印d[][]的内容*/
        /*这是在main()中的实现方案*/
        int i,j;
       
    for (i=0; i<=X-1; i++) {
            for (j=0; j<=Y-1; j++) {
                printf("%d, ",d[i][j]);
            }
            printf("\n");
        }
        return 0;
    }

    由于我们很可能经常会需要打印一个二维数组这样的东西,所以呢,我们会想写一个函数来专门干这件事儿:

    # define X (3)
    # define Y (5)

    /*为了随时都能打印d[][],我打算写下面这个函数来干这件事*/
    /*注意这个函数参数的写法。能改成int d[][]或int d[X][]或int d[X][Y]吗?
    想想看,为什么能或者不能?*/
    void show(int d[][5]) {
        int i,j;
        for (i=0; i<=X-1; i++) {
            for (j=0; j<=Y-1; j++) {
                printf("%d, ",d[i][j]);
            }
            printf("\n");
        }
        return;
    }

    int main() {
        int
            d[X][Y]={1,2,3,4,5,6,7,8};
        /*我想打印d[][]的内容*/
        /*这是利用函数的实现方案*/
        show(d);
        return 0;
    }

    再来看另一种形式的描写:

    # define X (3)
    # define Y (5)

    /*进一步推导,你知道的,专业的程序员嘛,总喜欢在函数参数中写指针形式的参数,
    而不是int d[][Y]这种样子。
    所以,我们就有了下面这部分代码。*/
    void show(int * d) {    /*看!这里是指针形式的参数*/
        int i,j;
        for (i=0; i<=X-1; i++) {
            for (j=0; j<=Y-1; j++) {
                printf("%d, ",d[i*Y+j]);/*看!这句话是不是深刻地反映了指针和数组元素之间的关系?*/
            }
            printf("\n");
        }
        return;
    }

    int main() {
        int
            d[X][Y]={1,2,3,4,5,6,7,8};
        /*我想打印d[][]的内容*/
        /*这是在main()中的实现方案*/
        show(d);
        return 0;
    }

    到此为止,我不讲了,读者可以自己领会上述代码的意义。

    本文所有代码可以在这里下载

  • 相关阅读:
    细说Unity3D(一)——移动平台动态读取外部文件全解析
    React16新增生命周期与旧版本生命周期的区别
    refs的作用是什么,你在什么业务场景下使用过refs
    react setState 的用法
    webpack中,是借助loader完成的JSX代码的转化,还是babel?
    虚拟dom是什么?为什么虚拟dom会提升代码性能?
    react 性能优化的最佳实践?
    你会把数据统一放在 redux 中管理,还是共享数据放在 redux 中管理?
    redux 中间件的原理是什么?
    谈谈你对This对象的理解?
  • 原文地址:https://www.cnblogs.com/fzd19zx/p/2919841.html
Copyright © 2011-2022 走看看