二维数组名称

  1. 除了两种特殊情况外,都是指向第一个一维数组的指针
  2. 两种特殊情况
    1. sizeof  统计整个二维数组长度
    2. 对数组名称取地址   int(*p2)[3][3] = &arr;
      void test01()
      {
      	//可读性高
      	int arr[3][3] =
      	{
      		{1,2,3},
      		{4,5,6},
      		{7,8,9}
      	};
      
      	//int arr2[3][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
      
      	//int arr3[][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
      
      	int(*p)[3] = arr; //二维数组名称  指向 第一个一维数组的指针
      
      
      	//特殊情况
      
      	printf("sizeof arr = %d\n", sizeof(arr));  //统计二维数组长度
      
      	int(*p2)[3][3] = &arr; // 对数组名取地址   二维数组指针变量   
      
      
      	//访问二维数组中的6 
      	printf("%d\n", arr[1][2]); //给人看
      	printf("%d\n", *(*(arr + 1) + 2)); //给机器
      }
      

  3. 二维数组做函数参数传递方式
    1. void printArray( int p[][3] , int row, int col)
    2. void printArray(int p[3][3], int row, int col)    可读性高
    3. void printArray( int(*p)[3]  , int row ,int col)
      //void printArray( int p[][3] , int row, int col)
      void printArray(int p[3][3], int row, int col)
      //void printArray( int(*p)[3]  , int row ,int col)
      {
      	for (int i = 0; i < row; i++)
      	{
      		for (int j = 0; j < col; j++)
      		{
      			//printf("%d ", p[i][j]);
      
      			printf("%d ", *(*(p + i) + j));
      
      		}
      		printf("\n");
      	}
      }
      void test02()
      {
      	int arr[3][3] =
      	{
      		{ 1, 2, 3 },
      		{ 4, 5, 6 },
      		{ 7, 8, 9 }
      	};
      
      	printArray(arr, 3, 3);
      }

  4. 数组指针  指针数组 区别
    1. 数组指针 是一个指向数组的指针 int (*p)[10];
    2. 指针数组 是一个存放指针的数组 int * p[10];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值