| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 860 人关注过本帖
标题:二维数组的指针问题?
只看楼主 加入收藏
清微御宇
Rank: 6Rank: 6
来 自:开封
等 级:侠之大者
威 望:2
帖 子:318
专家分:497
注 册:2012-1-15
收藏
得分:0 
回复 7楼 TonyDeng
好吧,无颜以对了!

Stay hungry , Stay foolish!
2012-02-21 19:40
柳絮飞
Rank: 2
等 级:论坛游民
帖 子:21
专家分:24
注 册:2012-2-16
收藏
得分:8 
*(a+1)表示1行0列元素的地址!*(a【1】+2)表示1行2列元素a【1】【2】的值,楼主自己细心体会!
2012-02-21 19:43
你们都要疼我哦
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:火星
等 级:贵宾
威 望:49
帖 子:1296
专家分:2746
注 册:2008-7-13
收藏
得分:2 

小妹,哥哥看你骨骼清奇,绝非凡人,将来必成大业,不如这样,你先把裤裤脱了,待哥哥为你开启灵窍,然后我们一起努力钻研如何
2012-02-21 20:36
风诺
Rank: 1
等 级:新手上路
帖 子:2
专家分:2
注 册:2012-2-16
收藏
得分:2 
好好看书吧!读扎实点
2012-02-21 22:19
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 11楼 清微御宇
10樓說的是對的,就是按那個理解。C沒有什麼多維數組的概念,二維數組只是數組的數組。事實上,數組也不是C的數據類型,只是一堆數的集合而已,換句話說,只是對一堆數的看法。

授人以渔,不授人以鱼。
2012-02-21 23:56
fuqiyang
Rank: 1
等 级:新手上路
帖 子:2
专家分:3
注 册:2012-2-23
收藏
得分:0 
举例:int a[3][4]
先解释一下,我们都知道这里a代表二维数组的首地址,即a[0][0]的地址。
      a+1代表第二行的首地址,即a[1][0]的地址,
      a+2代表第三行的首地址,即a[2][0]的地址。

      而*a代表第一行的首地址,即a[0][0]的地址,*a+1代表第二个元素的地址
      *a+2代表第三个元素的地址
      ...
      *a+11代表第十二个元素的地址

进而,*(a)+1或者*(a+0)+1就是a[0][1]的地址,而*(*(a+0)+1)就是a[0][1]
      *(a+1)+1就是第二行第二个元素的地址,即a[1][1]的地址,而*(*(a+1)+1)就是元素a[1][1]
      举一反三

对于a[1]就是第二行的首地址,a[2]就是第三行的地址,而a[1]+2就是第二行的第三个元素,即a[1][2]
那么*(a[1]+2)就是第二行第三个元素,即a[1][2]

到此,细心的你可能会发现,二维数组有行和列的区别,改变行: a或者*a,代表第一行首地址,同样a[0]代表的也是第一行的首地址;a+1或者*(a+1),代表第二行首地址,同样a[1]代表的也是第二行的首地址。改变列:*a+1代表第二个元素,也就是a[0][1]的地址。只有这样区别才不会混淆。

[ 本帖最后由 fuqiyang 于 2012-2-23 18:38 编辑 ]
2012-02-23 18:24
快速回复:二维数组的指针问题?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019711 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved