二维数组的定义和使用

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>

 

int main01()

{

  //一维数组:数据类型 数组名[元素个数]={值1,值2}

  /*二维数组数据类型 数组名[行][列]=

  {
    {值1,值2},
    {值3,值4}
  }
  */

  int arr [2] [3]=

  {

    {1,2.3}.

    {4,5,6}

  };

  arr[1][2] = 20;//6=20

  for (int i = 0; i < 2; i++)

  {
    for (int j = 0; j < 3; j++)
    {
      printf("%d\t", arr[i][j]);
    }  
    printf("\n");

  }

  

  printf("二维数组大小:%d\n", sizeof(arr));//行*列*数据类型 2*3*4=24
  printf("二维数组一行的大小%d\n", sizeof(arr[0]));//12
  printf("二维数组元素大小%d\n", sizeof(arr[0][0]));//4
  printf("二维数组行数:%d\n", sizeof(arr) / sizeof(arr[0]));//24/12=2
  printf("二维数组列数:%d\n", sizeof(arr[0]) / sizeof(arr[0][0]));//12/4=3

  return 0;

//结果

}

 

int main02()

{

  int arr[2][3]=

  {
    {1,2,3},
    {4,5,6}
  };

  //for(int i=0;i<6;i++)

  for (int i = 0; i < 2; i++)

  {

    for (int j = 0; j < 3; j++)  

    {

      printf("%p\n", &arr[i][j]);

    }

  }

  printf("\n\n\n");

 

  

  //二维数组首地址
  //arr[0]=100;err//二维数组中一个下标,表示一行的数据,不是一个具体的值
  printf("%p\n", arr);
  printf("%p\n", arr[0]);//第一行与第二行相差12个地址
  printf("%p\n", arr[1]);//第二行

  printf("%p\n", &arr[0][0]);//[0][0]是一个值,需要加上&
  printf("%p\n", &arr[0][1]);//[0][0]和[0][1]相差4个地址

  return 0;

//结果

}

 

int main03()

{ 

  //二维数组初始化
  //int arr[2][3] = { {1,2,3},{4,5,6} };


  //int arr[][3] = { 1,2,3,4,5,6 };//将2省略,会根据3列知2行
  //int arr[][3] = { 1,2,3,4,5,6,7 };//{1,2,3},{4,5,6},{7,0,0}会补0
  //int arr[][] = { 1,2,3,4,5,6 };err;列不能省略,只有挨着数组名的可以省略
  //int arr[][3]={0};1行3列,相当于一维数组

  int arr[2][3] =  {1,2,3,4,5,6};//一般不这样写

  for (int i = 0; i < 2; i++)

  {

    for (int j = 0; j < 3; j++)

    {

      printf("%d\t", arr[i][j]);

    }

    printf("\n");

  }

  return 0;

//结果

}

posted @ 2020-08-13 20:56  wh19991213  阅读(1303)  评论(0编辑  收藏  举报