| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1638 人关注过本帖
标题:[求助]关于二维数组指针的一些问题
只看楼主 加入收藏
奥丁
Rank: 1
等 级:新手上路
帖 子:327
专家分:0
注 册:2006-10-18
结帖率:100%
收藏
 问题点数:0 回复次数:9 
[求助]关于二维数组指针的一些问题
1. int a[3][4], (*p)[4];
2. p = a;
3. p+i == &b[i],
4. b[i] ==*(p + i),
5. b[i] + j == &b[i][j],
6. b[i][j] == *(*(p + i) + j)


1. 定义一个二维数组 和 一个数组指针
2. 正数组指针指向这个二维数组
3. 第i行的首地址
4. 第i行一维数组的值
5. ?
6. ?

帮忙看一下 我前4行理解的对不对? 还有第5,6行是什么意思?看不懂 帮忙解释一下

搜索更多相关主题的帖子: 指针 
2007-10-13 14:49
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 

1 错```

INT (*p)[4];``定义一个指向一个含4个整型元素的一维数组的的指针变量``等价于int p[4];

你下面的b是什么```???

2.让我感觉很难受```但是肯定不可以```一个指想2维```是一个2级指针``一个指想一维``是一级指针```

而且我不知道数组间的名字是不是可以相互赋值```


[此贴子已经被作者于2007-10-13 15:34:21编辑过]


女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-10-13 15:06
copu1
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2007-10-8
收藏
得分:0 

定义一维数组指针应该是int *p[4] 二维数组指针是int *p[4][4]
最好把你自己的程序执行一下再输出看看是上面!

加深对指针理解可以参考下面程序!
#include <stdio.h>
char *pp[2][3]={ { "abc", "defgh", "ijkl"} , { "mnopqr", "stuvw", "xyz"} }; //2维数组等价于此
main ( )
{ printf("%c\n",***(pp+1));
//*(pp+1)即pp[1]指向{ "mnopqr" , "stuvw", "xyz"}元素
//**(pp+1)即pp[1][0]指向"mnopqr"
//***(pp+1)即pp[1][0][0]即'm'

printf("%c\n",**pp[0] );
//pp[0]指向{ "abc", "defgh", "ijkl"}
//*pp[0]即pp[0][0]指向"abc"
//**pp[0]即pp[0][0][0]即'a'

printf("%c\n", (*(*(pp+1)+1))[4] );
//*(pp+1)即pp[1]指向{ "mnopqr" , "stuvw", "xyz"}
//*(*(pp+1)+1)即pp[1][1]指向"stuvw"
//(*(*(pp+1)+1))[4]即pp[1][1][4]即'w'

printf("%c\n", *(pp[1][2]+2) );
//pp[1][2]指向"xyz"
//*(pp[1][2]+2)即pp[1][2][2]即'z'


printf("%s\n", **(pp+1) );
//*(pp+1)即pp[1]指向{ "mnopqr" , "stuvw", "xyz"}
//**(pp+1)即pp[1][0]指向"mnopqr"
//输出类型string,输出"mnopqr"
}


2007-10-13 16:08
奥丁
Rank: 1
等 级:新手上路
帖 子:327
专家分:0
注 册:2006-10-18
收藏
得分:0 
1. int a[3][4], (*p)[4];
2. p = a;
3. p+i == &b[i],
4. b[i] ==*(p + i),
5. b[i] + j == &b[i][j],
6. b[i][j] == *(*(p + i) + j)

这个我应该搞懂了
它不是一个完整的程序
int (*p)[4]是一个行指针
b只是一个临时的东西 把a[3][4]这个二维数组分成几个一维数组 每个一维数组名是b[0],b[1],b[2],都包含4个整型


p = a; //让p指向数组a的首地址
p+i == &b[i], //第i行的首地址,也就是第i个一维数组的首地址(每个元素是一个一维数组,对元素取址)
b[i] == *(p + i), //b[i] ==*(&b[i]),*&抵消,b[i]也是第i行的首地址(也可以这样理解,比如b[i][4],b[i]可以看作是数组名,也就是这个一维数组的地址)
b[i] + j == &b[i][j], //b[i][4]这个一维数组偏移j位,就是b[i][4]中第j个元素的地址也就是&b[i][j]
b[i][j] == *(*(p + i) + j) //全部替换一下 再取值 得出b[i][j]的值,也就是a[3][4]这个二维数组第i行第j列的值



楼上int (*p)[4]等价于int p[4];是不可能的吧 前边是数组指针后边是数组啊
2007-10-13 16:23
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
楼上的,偶是Paladin

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2007-10-13 16:23
奥丁
Rank: 1
等 级:新手上路
帖 子:327
专家分:0
注 册:2006-10-18
收藏
得分:0 
???               
2007-10-13 16:43
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
晕了啊`````

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-10-13 16:43
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
谢谢大家``明白了````


女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-10-13 16:49
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
[QUOTE]楼上int (*p)[4]等价于int p[4];是不可能的吧 前边是数组指针后边是数组啊[/QUOTE]

这个还是要说一下的``

int (*p)[4] 不是指针数组```是一个指向有一个含4个整型元素的一维数组的的指针变量``

当然我也错了``这个完全不等价于P[4]```

因为这也是一个2级指针```



女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-10-13 18:56
奥丁
Rank: 1
等 级:新手上路
帖 子:327
专家分:0
注 册:2006-10-18
收藏
得分:0 
"int (*p)[4] 不是指针数组"

我说的是 数组指针, 是指向一个含有4个整型元素的一维数组 也就是我这里的每一行 行指针

当然也是个指针了
2007-10-13 20:05
快速回复:[求助]关于二维数组指针的一些问题
数据加载中...
 
   



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

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