加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱资讯网 (https://www.52junxun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

物联网学习教程—多维数组与指针

发布时间:2022-10-20 11:13:18 所属栏目:PHP教程 来源:
导读:  用指针变量可以指向一维数组中的元素,也可以指向多维数组中的元素。但在概念上和使用上,多维数组的指针比一维数组的指针要复杂一些。

  1. 多维数组元素的地址

  先回顾一下多维数组的性质,可以认
  用指针变量可以指向一维数组中的元素,也可以指向多维数组中的元素。但在概念上和使用上,多维数组的指针比一维数组的指针要复杂一些。
 
  1. 多维数组元素的地址
 
  先回顾一下多维数组的性质,可以认为二维数组是“数组的数组”,例 :
 
  定义int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};
 
  则二维数组a是由3个一维数组所组成的。设二维数组的首行的首地址为2000 ,则
 
  #include
 
  #define FROMAT″%d,%d\n″
 
  void main()
 
  { int a[3][4]={1,3,5,7,9,11,13,
 
  15,17,19,21,23};
 
  printf(FORMAT,a,*a);
 
  printf(FORMAT,a[0] , *(a+0));
 
  printf(FORMAT,&a[0],&a[0][0]);
 
  printf(FORMAT,a[1],a+1);
 
  printf(FORMAT,&a[1][0],*(a+1)+0);
 
  printf(FORMAT,a[2],*(a+2));
 
  printf(FORMAT,&a[2],a+2);
 
  printf(FORMAT,a[1][0],*(*(a+
 
  1)+0));
 
  }
 
  某一次运行结果如下:
 
  158,158 (0行首地址和0行0列元素地址)
 
  158,158 (0行0列元素地址)
 
  158,158 (0行0首地址和0行0列元素地址)
 
  166,166 (1行0列元素地址和1行首地址)
 
  166,166 (1行0列元素地址)
 
  174,174 (2行0列元素地址)
 
  174,174 (2行首地址)
 
  9,9 (1行0列元素的值)
 
  指向多维数组元素的指针变量
 
  (1) 指向数组元素的指针变量
 
  例如:用指针变量输出二维数组元素的值
 
  #include
 
  void main()
 
  { int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
 
  int*p;
 
  for(p=a[0];p<a[0]+12;p++)
 
  {if((p-a[0])%4==0)
 
  printf(″\n″);
 
  printf(″%4d″,*p); }
 
  }
 
  (2) 指向由m个元素组成的一维数组的指针变量
 
  例: 出二维数组任一行任一列元素的值
 
  #include
 
  void main ( )
 
  { int a[3][4]={1,3,5,7,9,11,
 
  13,15,17,19,21,23};
 
  int (*p)[4],i,j;
 
  p=a;
 
  scanf(″ i=%d,j=%d″,&i,&j);
 
  printf(″a[%d,%d]=%d\n″,i,
 
  j,*(*(p+i)+j));
 
  }
 
  3. 用指向数组的指针作函数参数
 
  例:有一个班,3个学生,各学4门课,计算总平均分数以及第n个学生的成绩。这个题目是很简单的。只是为了说明用指向数组的指针作函数参数而举的例子。用函数average求总平均成绩,用函数search找出并输出第i个学生的成绩。
 
  #include
 
  void main()
 
  { void average(float *p,int n);
 
  void search(float (*p)[4],int n);
 
  float score[3][4]={{65,67,70,60},{80,
 
  87PHP多维数组,90,81},{90,99,100,98}};
 
  average(*score,12);/*求12个分数的平均分*/
 
  search(score,2);/*求序号为2的学生的成绩*/
 
  }
 
  void average(float *p,int n)
 
  { float*p_end;
 
  float sum=0,aver;
 
  p_end=p+n-1;
 
  for(;p<=p_end;p++)
 
  sum=sum+(*p);
 
  aver=sum/n;
 
  printf(″average=%5.2f\n″,aver);
 
  }
 
  void search(float (*p)[4],int n)
 
  / * p是指向具有4个元素的一维数组的指针 */{int i;
 
  printf(″the score of No. %d are:\n″,n);
 
  for(i=0;i<4;i++)
 
  printf(″%5.2f″,*(*(p+n)+i));
 
  }
 
  程序运行结果如下:
 
  average=82.25
 
  The score of No.2 are:
 
  90.0099.00100.0098.00
 

(编辑:我爱资讯网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!