一级棒(Eachfun)
RSS订阅
多维数组
发表时间:2006-07-11 00:46:42 关键词:C++,MFC,VC,Primer,编程,教程,读书

  引用:严格地说,C++中没有多维数组。
  笔记:不只是C++啦,C中就是这样。不过,正因为C++中没有多维数组,而提供了“数组的数组”,所以C/C++在数组使用上更灵活。
  多维数组的定义和使用没什么要多提的,用过就懂了。无非是多一对括号而已。不过,如果把它跟指针一起用,倒是要注意的:二维数组名对应的是“指向指针的指针”,所以,如果要在函数间传递多维数组,指针类型一定要正确:
  int a[3][4];
  int *p1 = &a[0][0];//a[][]是一个int,对其取地址就是int*
  int *p2 = a[0];//a[0]虽然是a有一个元素,但它也是另一个数组的数组名
  int **p3 = a;//a是一个二维数组的数组名
  int **p4 = &a[0];//a[0]是一个数组名,它是a数组的一个成员
  另外,有一个比较难记、容易混淆的用法:
  int (*p5)[4] = a;
  说它容易混淆,是因为它与“int *p5[4];”有着截然不同的意义。前者是指定义一个指向数组的指针,后者则是定义一个指针数组。——头昏ing...
  本人在实际使用中,经常避开多维数组,而用其它途径来使用一大堆数值。比如可以这样用:
  int a, b;//两维的元素个数
  int *p = new int[a*b];
  for (int i=0; i<a; ++i)
    for (int j=0; j<b; ++j)
      p[i*a+j].....;
  delete []p;
  用这种方法,就是三维、四维也不用考虑“指向指针的指针”这么复杂的东西。不是我不会,而是不高兴去想。

本站特约顾问律师常州东晟律师事务所朱立律师(电话13915029670,QQ646146109)提醒您:
本站文章皆为作者原创,其它媒体(包括但不限于报刊、杂志、网站、电视、电台)未经作者书面许可严禁转载(或部分摘录)!
发表评论
称呼:
QQ:
邮箱:
链接:
内容:
搜索: 百度搜索 Google搜索
Copyright©2000 - 2008 Eachfun.Com, All Rights Reserved 一级棒网络
苏ICP备05080156号
一级棒建站系统 http://www.eachfun.com 一级棒版权所有,未经许可不得商用!