| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1079 人关注过本帖
标题:二维数组与指针
只看楼主 加入收藏
lxs5216
Rank: 1
等 级:新手上路
帖 子:144
专家分:0
注 册:2006-2-3
收藏
 问题点数:0 回复次数:16 
二维数组与指针
请教各位高人,我们知道如果有
int a[n], *p;
那可以用p=a来指向一维数组a,指针p的移动是一次移动向下移动一个地址。

但是如果有
int a[3][4],*p;
那么p++移动的时候每次指向的是a[0][0]、a[1][0]、a[2][0]的地址,如果要指向a[2][3],那该如何控制指针了?请详细说明一下喽,实在很模糊喽!
搜索更多相关主题的帖子: 指针 详细说明 int 高人 模糊 
2006-07-07 16:26
龙轩v亚风
Rank: 1
等 级:新手上路
威 望:1
帖 子:1073
专家分:0
注 册:2006-4-20
收藏
得分:0 
再加个*

狂风扫落叶,扫把都失业!拍卖QQ:559372
2006-07-07 18:01
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 

*(p+2*4+3)


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-07-07 18:10
lxs5216
Rank: 1
等 级:新手上路
帖 子:144
专家分:0
注 册:2006-2-3
收藏
得分:0 
以下是引用SunShining在2006-7-7 18:10:31的发言:

*(p+2*4+3)

什么意思啊!

没道理的撒

2006-07-07 19:48
乌鸦丘比特
Rank: 1
等 级:新手上路
威 望:2
帖 子:625
专家分:0
注 册:2004-7-19
收藏
得分:0 
定义P为指向数组的指针
int (*p)[4];
p=a;
这样就可以了

我喜欢创造,一只扑腾着翅膀向天空飞翔的乌鸦
2006-07-07 19:53
lxs5216
Rank: 1
等 级:新手上路
帖 子:144
专家分:0
注 册:2006-2-3
收藏
得分:0 
以下是引用乌鸦丘比特在2006-7-7 19:53:35的发言:
定义P为指向数组的指针
int (*p)[4];
p=a;
这样就可以了

可以了???
是可以用来指向二维数组了还是一维数组,如果是二维数组的话那要怎么运用呢?

2006-07-07 19:57
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
以下是引用乌鸦丘比特在2006-7-7 19:53:35的发言:
定义P为指向数组的指针
int (*p)[4];
p=a;
这样就可以了

int *p=a[0];


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-07-07 20:15
乌鸦丘比特
Rank: 1
等 级:新手上路
威 望:2
帖 子:625
专家分:0
注 册:2004-7-19
收藏
得分:0 
这个是指向一维数组的指针,p++完成的结果满主楼主提出的要求

如果p=a;的话,就有
p[0][1]==a[0][1];
p[i][j]==a[i][j];

我喜欢创造,一只扑腾着翅膀向天空飞翔的乌鸦
2006-07-07 20:17
乌鸦丘比特
Rank: 1
等 级:新手上路
威 望:2
帖 子:625
专家分:0
注 册:2004-7-19
收藏
得分:0 
还有如果定义
int a[3][4],*p;
p=a[0]的话,每次p++的结果不是楼主所期待的那样是a[0][0]、a[1][0]、a[2][0]的地址

我喜欢创造,一只扑腾着翅膀向天空飞翔的乌鸦
2006-07-07 20:19
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 

LZ概念浑浊..

如果定义 指向行的指针 (*p)[4]=a;.那么a[2][3]就是 *(*(p+2)+3))
如果定义 指向列的指针 *p=a[0]; 那么a[2][3]就是 *(p+2*4+3)

楼主应该还没弄明白行和列的区别..乌鸦给他解释一下吧



PS: ANSI C中 int *p=a; 是错误的


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-07-07 20:28
快速回复:二维数组与指针
数据加载中...
 
   



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

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