C语言二维数组

一 :二维数组

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

    int a[3][4],定义一个数组,有3个元素,a[0]、a[1]、a[2]

    a[0]  又是一个一维数组,有4个元素

二:二维数组的定义及注意

    格式:数据类型   二维数组名[第一维的长度][第二维的长度]

    int arr[3][4];

    注意:

    1)数组名不能和变量名重复

    2)遵循标识符命名原则

    3)数组的长度可以使用宏定义

    4)数组的长度可以使用变量

    int m,n;

    scanf("%d,%d",&m,&n);

    int arr[m][n];    //这种写法是可以的 让用户输入两个值

    sum(int x,int y,int arr[x][y]); //这种写法也是可以的

三:二维数组的初始化

    1)定义的同时进行初始化

    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};  可以的

    a[0][0]=1,a[0][1]=5,a[0][2]=2,

    a[1][0]=3,a[1][1]=4,a[1][2]=8

    //省略第一维的初始化,注意:第二维不能省略

    int a[][2]={{1,2},{3,4},{3,5}};

    //定义了3行2列的数组

    (2)部分初始化

    int a3[2][2]={{0},{0}};

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

    指定元素的初始化

    int a4[3][4]={{[0][3]=1},{[2][2]=100}}

    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

    3)二维数组的访问

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

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

    a[0][0] = 13;

    int [m][n]数组

    行下标范围:0 ~ m-1

    列下标范围:0 ~ n-1

四:二维数组的存储细节

    二维数组在计算机内存中有两种存储方式:

    1>按行以此存储

    2>按列以此存储

    //计算二维数组占用的总得字节数

    size = sizeof(arr);

    //计算一行占用多少个字节

    size = sizeof(arr[0]);

    //计算一个二维数组的每一行有多少列

    size = sizeof(arr[0])/sizeof(int);

    //计算一个二维数组有多少行

    size = sizeof(arr)/sizeof(arr[0]);

五:二维数组跟函数的关系,同一维数组也是分为两种情况

    1>数组中得元素作为形参(值传递)

    2>数组名作为形参 (地址传递也就是指针,这样可以改变数组的变量值)

    注意点同一维数组

    应用的话可以作为地图做迷宫,推箱子,五子棋游戏

原文地址:https://www.cnblogs.com/-boy/p/4038819.html