标题:二维数组指针
取消只看楼主
JENNET
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2006-5-28
 问题点数:0 回复次数:3 
二维数组指针

#include "stdio.h"
main()
{
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int (*p)[4]=a,i,j,k=0;
for (i=0;i<3;i++)
for (j=0;j<2;j++)
k=k+*(*(p+i)+j);
printf("%d\n",k);

}

p=0,i=j=0,k=3.

p=0,i=0,j=1,k=3+5=8.

p=0,i=1,j=0,k=8+7=15.

p=0,i=j=1,k=15+9=24.

p=0,i=2,j=0,k=24+11=35.

p=0,i=2,j=1,k=35+13=48.

我错哪了?结果是60.

搜索更多相关主题的帖子: 指针 int main include stdio 
2006-06-25 16:55
JENNET
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2006-5-28
得分:0 
p指向数组a的首址,p的地址都为0,当i=j=0时,*(p+i)变量得到1的值,而*(*(p+i)+j)变量得到3的值,所以第一次k=3,这样理解对吗?...以下的取值我都是这样做,哪不对了?

CGCHINA REVOLUTION.....
2006-06-25 17:15
JENNET
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2006-5-28
得分:0 
(*p)[4]=a,一个有4个元素的一维数组指针指向数组a的首址,这时p在元素7的位置,通过引用二维数组元素求和,7+9+9+11++11+13=60,这样理解总该对了吧?不对的请指正...點解..

CGCHINA REVOLUTION.....
2006-06-25 21:38
JENNET
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2006-5-28
得分:0 
THANKS,知道怎么做了.

CGCHINA REVOLUTION.....
2006-06-25 23:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-74730-1-1.html




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

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