| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 686 人关注过本帖
标题:如下C程序中的指针如何理解?
只看楼主 加入收藏
wgrinms
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2005-11-4
收藏
 问题点数:0 回复次数:6 
如下C程序中的指针如何理解?
图片附件: 游客没有浏览图片的权限,请 登录注册



如上程序中的指针,用Printf()输出的,结果中既有地址又有数值,
何时是地址,何时是数值,一时难以搞懂,请高手指教

[此贴子已经被作者于2005-11-7 20:38:13编辑过]

搜索更多相关主题的帖子: 指针 
2005-11-07 20:26
csjcharles
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2005-11-7
收藏
得分:0 
恐怕那个不是地址吧`~~~
2005-11-07 21:22
wgrinms
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2005-11-4
收藏
得分:0 
哦,结果中7位数不是地址,那会时什么?
2005-11-07 22:04
踏浪帝国
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2005-11-5
收藏
得分:0 
a[i]是第i行第0列元素地址;
*a[i]是第i行第0列元素的值;
*(a+i)+i是第i行第i列元素地址,故*(*a+i)+i)是第i行第i列元素的值;
*(a+i)同a[i]也表示是第i行第0列元素地址;
(a+i)是第i行首地址;
2005-11-07 22:25
wgrinms
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2005-11-4
收藏
得分:0 
以下是引用踏浪帝国在2005-11-7 22:25:32的发言:
a[i]是第i行第0列元素地址;
*a[i]是第i行第0列元素的值;
*(a+i)+i是第i行第i列元素地址,故*(*a+i)+i)是第i行第i列元素的值;
*(a+i)同a[i]也表示是第i行第0列元素地址;
(a+i)是第i行首地址;

谢谢你的回复,那倒底如何判断是地址还是值,有没有什么原理所在?

2005-11-07 22:35
踏浪帝国
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2005-11-5
收藏
得分:0 
呵呵!!!
这个好象没有什么原理,都是记的。
2005-11-07 22:55
wgrinms
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2005-11-4
收藏
得分:0 
终于明白了

1. 2维数组的指针
假设有如下数组定义语句: int array[3][4];
(1)从2维数组角度看,数组名array代表数组的起始地址, 是一个以行为单位进行控制的行指针:
·array+i:行指针值,指向2维数组的第i行。
·*(array+i):(列)指针值,指向第i行第0列(控制由行转为列,但仍为指针)。
·*(*(array+i)):数组元素array[i][0]的值。
用array作指针访问数组元素array[i][j]的格式:
*(*(array+i)j)
注意:行指针是一个2级指针

C语言规定:数组名代表数组的地址,所以array[i]是第i行1维数组的地址, 它指向该行的第0列元素,是一个以数组元素为单位进行控制的列指针:
·array[i]+j:(列)指针值,指向数组元素array[i][j]。
·*(array[i]+j):数组元素array[i][j]的值。
如果有“int array[3][4],*p=array[0];”,则p+1指向下一个元素,如图9-8所示。
用p作指针访问数组元素array[i][j]的格式:
*(p+(*每行列数+j) )
2.行指针变量──指向由n个元素组成的一维数组的指针变量

[此贴子已经被作者于2005-11-7 23:17:06编辑过]

2005-11-07 23:13
快速回复:如下C程序中的指针如何理解?
数据加载中...
 
   



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

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