欢迎访问wabc.cc — 源码交易 · 软件定制 · 建站服务一站式平台
全部分类
首页 - 首页 - 解决方案 - 推荐文章 - 物联网学习教程— 多维数组与指针

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

分类:推荐文章 · 发布:2025-12-20 · 浏览:2

用指针变量可以指向一维数组中的元素,也可以指向多维数组中的元素。但在概念上和使用上,多维数组的指针比一维数组的指针要复杂一些。

 

1. 多维数组元素的地址

先回顾一下多维数组的性质,可以认为二维数组是“数组的数组”,例 :

定义int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};

则二维数组a是由3个一维数组所组成的。设二维数组的首行的首地址为2000   ,则

多维指针1.png

 

#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,

                               87,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.00 99.00 100.00 98.00

 


上一篇:趣步iwc源码开发现成
下一篇:最好的“闺蜜”——Cir希也

相关文章

源码分类

热门源码

最新资讯

联系我们