| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 753 人关注过本帖
标题:指针与二维数组
只看楼主 加入收藏
zfzdhz
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2008-8-21
收藏
 问题点数:0 回复次数:7 
指针与二维数组
main()
{
int a[3][3]={1,2,3,4,5,6,7,8,9};
int *p=a[0];
p++;
printf("%d",*p);
}
*p不是一个地址吗   怎么输出的是2  
还有p++是指向a[0][1]
什么情况下指向的是a[1][0]???
搜索更多相关主题的帖子: 指针 
2008-10-10 15:01
fxgcquhx
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-10-6
收藏
得分:0 
如果像你那样赋值,则*p不是地址,而是&a[0][0];如果想输出a[1][0],则可以将p++改为p+4即可;
  如果你想让*p是一个地址,可以这样做:
void main()
{
int a[3][3]={1,2,3,4,5,6,7,8,9};
int(*p)[3];
p=a;
printf("%d",*(*(p+1)));
}此时p是一个二级指针
2008-10-10 17:17
xfcy
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-9-15
收藏
得分:0 
[bo][un]zfzdhz[/un] 在 2008-10-10 15:01 的发言:[/bo]

main()
{
int a[3][3]={1,2,3,4,5,6,7,8,9};
int *p=a[0]

int *p=a[0] 有两重意思:
1.int *p定义指针变量p,p指向整型变量
2.p=a[0]将的a[0][0]地址赋给指针变量p,也即有*p=a[0][0]
并不是*p=a[0]
2008-10-10 23:10
zfzdhz
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2008-8-21
收藏
得分:0 
什么情况下指向的是a[1][0]???
2008-10-11 11:45
faminxmu
Rank: 3Rank: 3
来 自:厦门
等 级:论坛游侠
帖 子:191
专家分:106
注 册:2008-4-23
收藏
得分:0 
如果按你的代码p=*(a+1)就是指向a[1][0]了

在虚拟的世界中寻找目标。
2008-10-11 12:05
gongjiandenghua
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2008-10-11 13:09
xieguoyong888
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-10-11
收藏
得分:0 
main()
{
int a[3][3]={1,2,3,4,5,6,7,8,9};
int *p=a[0];
p++;
printf("%d",*p);
}
我也不太明白我就学过几天,我能说出P=2的原因,大家看看对不对*P指向了a[0]就是a的第一个原素那就是1后来P++不就是P再加1吗?
2008-10-11 13:43
yzy6806555
Rank: 1
来 自:河南工业大学
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-2-28
收藏
得分:0 
标准回答!!!
int *p=a[0];
是把a[0]这一行的首地址付给P了,不是把a[0][0]给它了,而且楼主说的就是错了*p和int* p是*的两个不同用法,一个是反引用,一个是简单的做声明用!p++即为a【0】那一行右移一个地址,即为a[0][1],所以就是2了!!
2008-10-11 13:53
快速回复:指针与二维数组
数据加载中...
 
   



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

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