A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 八寒地狱 中级黑马   /  2014-10-21 01:45  /  1795 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一   
二维数组

    一维数组的每一个元素又是一个数组(数组的数组)

   
    int a[3][4],定义一个数组,有3个元素,a[0]、a[1]、a[2]
   
    a[0]  又是一个一维数组,有4个元素
格式:数据类型   二维数组名[第一维的长度][第二维的长度]
       int arr[3][4];

       二维数组定义的注意事项跟一位数组差不太多

  注意:

      1)数组名不能和变量名重复
      2)遵循标识符命名原则
      3)数组的长度可以使用宏定义
      4)数组的长度可以使用变量

二维数组的初始化和访问方法
定义的同时进行初始化
   
     int a[5]={1,2,3};
     int a[] = {1,2};

     int a[3][4]={{},{},{}}

     格式:int a[m][n]={{值1,值2,....,值n},{},{}.....{m}}

(1)完全初始化

        int a[2][3]={{12,2,3},{23,45,56}};
        int a1[2][3]={1,5,2,3,4,8};
     省略第一维的初始化,注意:第二维不能省略
      int a[][2]={{1,2},{3,4},{3,5}}
  (2)部分初始化
   
        int a3[2][2]={{0},{0}};

        int a5[2][2]={1,2,3}

        指定元素的初始化
    2)先定义后初始化

        int a[4][3];

        a[0][0]=12,a[0][1]=12,a[0][2]=12
        a[1][0]=12,a[1][1]=12,a[1][2]=12
       )二维数组的访问

        数组名[行下标][列下标];

        int a[3][4];     //最大下标  a[2][3]

        a[0][0] = 13;

        int [m][n]数组

        行下标范围:0 ~ m-1
        列下标范围:0 ~ n-1
小练习

对二维数组的初始化和遍历
void test1(){
    //定义一个二维数组
    int arr[4][5];
    int arr2[][3]={1,12,2,2,2,3,34,4,5};
   
   
   
    for (int i=0; i<4; i++) {
        for (int j=0; j<5; j++) {
            //对数组arr进行初始化
            arr[i][j]=i+j;
        }
    }
   
    //对二维数组的遍历
    for (int i=0; i<4; i++) {
        for (int j=0; j<5; j++) {
            printf("%d ",arr[i][j]);
        }
        printf("\n");
    }


}

三 二维数组的储存方法

int main()
{

    //定义一个二维数组
    int arr[4][5];
    int arr2[][3]={1,12,2,2,2,3,34,4,5};
   
    //计算数组的总得字节数
    int a[5];
    //计算一维数组的占用的总字节数
    int size = sizeof(a);
    size = sizeof(a)/sizeof(int);
    //计算二维数组占用的总得字节数
    size = sizeof(arr);
    //计算一行占用多少个字节
    size = sizeof(arr[0]);
    //计算一个二维数组的每一行有多少列
    //           20          4
    size = sizeof(arr[0])/sizeof(int);
    //计算一个二维数组有多少行
    size = sizeof(arr)/sizeof(arr[0]);
   
    printf("%d\n",size);
   


    printf("Hello, World!\n");
    return 0;
}


二维数组和函数的关系:

    1)二维数组的元素作为函数的参数
  
      int a[4];
      一维数组:
       int sum(int x,int y){



       }

       sum(a[0],a[1])

       int a[3][4]={1,3,4,4,5,6,6,7,12,90,1,34};

      二维数组:
   
       int max(int x,int y){

            return x>y?x:y;
       }

       int m = max(a[1][0],a[2][3]);

       二位数组元素作为函数的参数实质是值传递


评分

参与人数 1技术分 +1 收起 理由
星河鹭起 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马