集团主站
欢迎来到成都达内官方网站!达内—美国上市公司 亿元级外企IT培训企业!
成都it培训哪家好
成都it培训哪家好
全国服务监督电话:15023458194  |   联系客服   |
当前位置:主页 > 培训课程 > C++ >

成都C++培训:对C/C++中多维数组指针的理解

发布者: 达内培训     浏览次数:     发布时间:2017-09-14 09:36:34

对于多维数组的理解比较困难,这也是由于和一维数组指针含义有冲突造成的,因此对于多维数指针的理解是个比较难,需要反复观察,谨慎使用,如果多维数组的概念不清楚那就需要...

  成都C++培训:对C/C++中多维数组指针的理解

  对于多维数组的理解比较困难,这也是由于和一维数组指针含义有冲突造成的,因此对于多维数指针的理解是个比较难,需要反复观察,谨慎使用,如果多维数组的概念不清楚那就需要从C/C++基础学起注意知识的积累!

  C 代码

  #include <stdio.h>

  main()

  {

  static int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; /* 定义一个3行4列的二维数组 */

  int *p;

  printf("%d %d\n",a,*a);

  printf("%d %d\n",a[0],*(a+0));

  printf("%d %d\n",&a[0],&a[0][0]);

  printf("%d %d\n",a[0][0],*(*(a+0)+0));

  for (p=a[0];p

  {

  if((p-a[0])%4==0) /* 利用整数指针变量p减去当前地址判断出是不是已经显示出了四个值,换行回车 */

  {

  printf("\n");

  }

  printf("%4d",*p); /* 打印出元素的值 */

  }

  printf("\n");

  }

  /*

  第5行中的a和*a打印出来的值,就会让人弄不明白我们知道数组传递的地址那么a表示这个数组的其实地址为什么*a却不是实际值呢?原因是在多维数组中a+0表示的是第0行的首地址,a+1表示是第一行的首地址,那么*a其实就是*(a+0),那么第一个元素其实是a[0][0]

  而*(a+0)仅仅是把一个3行4列的二维数组拆为了三个一维数组,*(a+0)显然表示的不是物理位置也就不可能得到第一个元素的值了,它仅仅是一个内存地址也就是第0行的启始地址,再看8行中的*(*(a+0)+0),它表示的则是第0行第0列个元素的值也就是a[0][0],再次强调*(a+0)表示的是数组第一行的首地址,也就是第二行的*(a+1),而元素值要得到显然就是*(*(a+0)+0)了如果是第0行第1个也就是*(*(a+0)+1)。

  */

  下面这个例子可以帮助我们理解多维数组指针作为函数参数传递的使用方法,通过这段代码可以帮助你更好的理解多位数组指针。

  C 代码

  #include <stdio.h>

  main()

  {

  void search_score(); /* 定义自定义涵数类型为不返回型 */

  void count_avg(); /* 定义自定义涵数类型为不返回型 */

  static float a[3][4]={{97,45.5,66,77},{88,92.5,78.5,66},{83,74.5,92,100}}; /* 输入3个学生的各自4门课的成绩 */

  search_score(a,0); /* 调换自定义涵数显示其中一个同学的各门课成绩 */

  count_avg(*a,12); /* 调换自定义涵数显示3个同学各门课的平均成绩成绩 */

  /* 注意上面的*a其实也就是a[0]或者是&a[0][]0将这行改写成count_avg(a[0],12);或者count_avg(&a[0][0],12)也都是对的 */

  }

  void search_score(p,n)

  float (*p)[4]; /* 定义一个指针变量p,说明它是一个指向一个包含4个整型变量一维数组的指针 */

  int n; /* 定义形式参数n为整形 */

  {

  int i; /* 定义用于循环的变量i */

  for (i=0;i<4;i++ ) /* 这里循环4次用于打印一个同学的4门课成绩 */

  {

  printf("%7.2f",*(*(p+n)+i));

  }

  printf("\n");

  }

  void count_avg(p,n)

  float *p;

  int n;

  {

  float *p_end;

  float sum = 0;

  float avg;

  p_end = p+n-1; /* 计算出最后一个数组元素的地址 */

  for (;p<=p_end;p++) /* 循环到最后一个元素地址就停止 */

  {

  sum += *p;

  }

  avg = sum/n;

  printf("avg=%7.2f\n",avg);

  }

  /*

  注意此题的意思在于输入3个同4门课的成绩,计算出平均值和显示其中一个同学的4门课成绩,此例是对多维数组指针和多维数组

  的指针作为涵数参数传递的总结,认真联系和体会可以很好的了解多维数组指针的概念到底是什么!

  */

  成都it培训哪家好,当然是成都达内培训,成都达内是一家专业的程序员培训机构,专注于网络营销课程,成都ui培训,成都软件测试培训,成都php培训,成都java培训,成都安卓培训,成都会计实操培训,web前端开发,成都网络营销培训,成都it培训,成都编程培训,成都程序员培训等IT培训,专业的成都软件培训机构,专业师资授课,真实项目实战、零首付、低押金、名企就业,达内培训怎么样

  成都C++培训,成都C++培训班,成都C++培训机构,成都C++培训哪家好?www.cdtedu.com/pxkc/c/咨询客服,获取成都达内19大课程1元试学两周名额

(责任编辑:成都达内)
最新开班
  • 成都Java培训班
    免费试听名额发放中...
  • 成都C++培训班
    免费试听名额发放中...
  • 成都PHP培训班
    免费试听名额发放中...
  • 成都网络工程培训班
    免费试听名额发放中...
  • 成都Unity3D培训班
    免费试听名额发放中...
  • 成都大数据培训班
    免费试听名额发放中...
  • 成都uid培训班
    免费试听名额发放中...
  • 成都会计培训班
    免费试听名额发放中...
  • 成都Python培训班
    免费试听名额发放中...
  • 成都嵌入式培训班
    免费试听名额发放中...
  • 成都web培训班
    免费试听名额发放中...
  • 成都软件测试培训班
    免费试听名额发放中...
在线留言
提交

校区地址:绵阳市涪城区临园路东段68号富临大都会7栋3单元9层12号

联系电话:15023458194

公交路线:富乐路口凯德广场(10路;29路;3路;15路;11路;15a路;71路)

校区地址:成都市锦江区东大街紫东楼端35号明宇金融广场19楼1906室

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市高新区奥克斯广场蜀锦路209号一楼商铺

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都锦江区东大街芷泉街229号东方广场C座3楼303

联系电话:15023458194

公交路线:芷泉街(188路;115路;515路;236路;505路;501路;84路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市武侯区佳灵路3号红牌楼广场2号写字楼11楼1115号

联系电话:15023458194

公交路线:红牌楼东(11路;92路;100路;111路;139路;g28路;快速公交K1/K2) 地铁路线:红牌楼站(地铁3号线)

校区地址:成都市锦江区红星路二段70号四川日报大厦502-2

联系电话:15023458194

公交路线:市二医院站(6路;49路;102路;5路;37路;g92路;) 地铁路线:地铁市二医院(地铁3号线)

校区地址:成都市锦江区东大街紫东段35号明宇广场2306

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:四川省成都市武侯区高新科技孵化园9号园区E座7楼

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都市人民南路一段86号“城市之心”大厦26楼

联系电话:15023458194

公交路线:成都市人民南路(6路;14路;42路;72路;76路;1010路;)

校区地址:成都市高新区奥克斯广场B座1708

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

了解达内动态
关注成都达内教育公众号

首页 | 关于达内 | 课程中心 | 专家师资 | 视频教程 | 学员空间 | 校企合作 | 新闻资讯 | 就业指导 | 网站地图

2016-2025 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56