| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 379 人关注过本帖
标题:问一个有关地址输出的问题
只看楼主 加入收藏
落雨的季节
Rank: 1
等 级:新手上路
帖 子:10
专家分:2
注 册:2012-12-12
结帖率:75%
收藏
 问题点数:0 回复次数:4 
问一个有关地址输出的问题
#include "stdio.h"
void main()
{ int a[3];

printf("%d,%d\n",&a[0],&a[2]);
printf("%d",&a[2]-&a[0]);
}
输出:
1245044,1245052
2
正常情况下第二行的输出不应该是8吗?
为什么是2呀?
搜索更多相关主题的帖子: include 
2012-12-20 17:09
bulubulukaka
Rank: 2
等 级:论坛游民
帖 子:19
专家分:40
注 册:2012-12-5
收藏
得分:0 
这个是因为指针相减不是简单的算数相减,还和他们的类型有关
(ptr1-ptr2)/(指针类型),而int为4字节。故8/4=2
2012-12-20 17:53
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
收藏
得分:0 

那么有人说,地址相减有什么用呢?
告诉你个算数组中或者字符串中计算元素个数的简单办法,那就是末元素地址减去首元素地址再加1哦,可以测试测试!

小小战士,战士中的战斗机!
2012-12-20 18:00
落雨的季节
Rank: 1
等 级:新手上路
帖 子:10
专家分:2
注 册:2012-12-12
收藏
得分:0 
回复 2楼 bulubulukaka
再追问一下,指针相减指的是两个数组元素间相差的元素个数吗?
谢谢~
2012-12-20 18:36
bulubulukaka
Rank: 2
等 级:论坛游民
帖 子:19
专家分:40
注 册:2012-12-5
收藏
得分:0 
回复 4楼 落雨的季节
“指针相减指的是两个数组元素间相差的元素个数吗?”
基本上就是这个意思,比如指针ptr1指向arr[0],指针ptr2指向arr[2],那么ptr2-ptr1就是两个数组元素间相差的元素个数。
啰嗦一句,如果不同类型的指针相减,比如int型的和char型的相减,编译器是不会通过的,会提示你减号两边的指针类型不一致。
2012-12-21 14:53
快速回复:问一个有关地址输出的问题
数据加载中...
 
   



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

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