• 24-二维数组和函数


     

    1、二维数组元素作为函数参数

      二维数组元素作为函数参数,相当于变量的值传递过程。

    2、二维数组名作为函数参数

      二维数组名作为函数参数,相当于地址传递。

    (1)在被调函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维大小的说明

    例如:

    void test(int array[3][5]);

    void test(int array [][5]);

    注意:二者都是合法等价的,但是不能把第二维或者更高维的大小省略,如下面的定义是不合法的:

    void test(int array[][]);

    因为从实参传递来的是数组的起始地址,在内存中按数组排列规则存放(按行存放),而并不区分行和列。

    如果在形参中不说明列数,则系统无法确定应为多少行多少列,不能只指定一位而不指定二维,下面写法也是错误的:

    void test(int array[3][]);

    (2) 实参数组的维数可以大于形参数组的维数,例如实参数组定义为:

    void test(int array[3][5]);

    而形参数组定义为:

    int array[2][5];

    这时形参数组只取实参数组的一部分,其余部分不起作用。

    思考&实现1:

    从键盘上接收两个参数分别存放到m,n中,使用m和n构成数组:

    1)定义一个函数使用i*j 初始化 a[i][j];

    2)定义一个函数打印二维数组的每一个值 

     1 /*
     2  从键盘上接收两个参数分别存放到m,n中,使用m和n构成数组:
     3  1)定义一个函数使用i*j 初始化 a[i][j]; 
     4  2)定义一个函数打印二维数组的每一个值
     5 */
     6 #include <stdio.h>
     7 //定义一个函数,用于打印数组中的元素
     8 void printArray(int x, int y, int arr[x][y])
     9 {
    10     for (int i = 0; i < x; i++)
    11     {
    12         for (int j = 0; j < y; j++)
    13         {
    14             //初始化每行元素后换行
    15             if(j % y == 0)
    16             {
    17                 printf("
    ");
    18             }
    19             //a[%d][%d]=%d后面敲一个tab,方便查看输出后的元素
    20             printf("a[%d][%d]=%d    ", i, j, arr[i][j]);
    21         }
    22     }
    23     //换行
    24     printf("
    ");
    25 }
    26 //定义一个函数,使用 i*j 初始化数组
    27 void initArray(int x, int y, int arr[x][y])
    28 {
    29     for (int i = 0; i < x; i++)
    30     {
    31         for (int j = 0; j < y; j++)
    32         {
    33             //给arr[i][j]赋值 i*j
    34             arr[i][j] = i * j;
    35         }
    36     }
    37         
    38 }
    39 
    40 int main()
    41 {
    42     int m, n;
    43     //提示用户输入两个数m, n
    44     printf("请输入两个数(用逗号隔开):
    ");
    45     //接收用户输入的两个数
    46     scanf("%d,%d", &m, &n);
    47     //定义一个数组,用于存储数组元素
    48     int a[m][n];
    49     //调用函数,初始化数组,数组a作为实参
    50     initArray(m, n, a);
    51     //调用函数,打印数组,数组a作为实参
    52     printArray(m, n, a);
    53     return 0;
    54 }

    当输入3,4时,输出结果为:

    人生之路,不忘初心,勿忘始终!
  • 相关阅读:
    matlab的矩阵基础
    matlab基础运算
    【转】Android设置虚线、圆角、渐变
    DialogFragment 自定义弹窗
    imeOptions 属性详解
    android fragment 博客 学习记录
    【转】android fragment 博客 学习
    android UI库
    【转】 Android自定义捕获Application全局异常
    vitamio 缓冲一部分时,loading还没消失,直接点击播放,loading未能消失
  • 原文地址:https://www.cnblogs.com/xdl745464047/p/4003851.html
Copyright © 2020-2023  润新知