| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 576 人关注过本帖
标题:请教一道题的解析?
只看楼主 加入收藏
自强
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:132
专家分:130
注 册:2011-10-3
结帖率:96.77%
收藏
已结贴  问题点数:20 回复次数:9 
请教一道题的解析?
#include < stdio.h >

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

    p = a;

    printf("%x\n", p);
    printf("%x\n", p + 9);
}

//若一个int型的变量占2个字节,第一个printf语句输出的是194,则第二个printf语句的输出结果是()
//课本给的的1a6答案
//可是我上机运行的时候给出了是12ff24 12ff48 这样的值?
//如果我把引用改为*p 和 *( p + 9),就给出正确的数组中元素值。
搜索更多相关主题的帖子: include 课本 元素 
2012-02-26 20:43
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
P 输出的是地址的值  *P输出的是数组中的数(指针指向的数)的值。

梅尚程荀
马谭杨奚







                                                       
2012-02-26 20:47
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
//若一个int型的变量占2个字节,第一个printf语句输出的是194,则第二个printf语句的输出结果是()
这个是你猜的,能解释下为什么是194?

梅尚程荀
马谭杨奚







                                                       
2012-02-26 20:49
自强
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:132
专家分:130
注 册:2011-10-3
收藏
得分:0 
回复 3楼 有容就大
不是 是2011高教版二级C语言 课后题目写的

成为一名真正合格的程序设计人员,是我的梦想……我希望我的梦一直保持下去,直到我从这个世界消失……
2012-02-26 22:37
自强
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:132
专家分:130
注 册:2011-10-3
收藏
得分:0 
回复 2楼 有容就大
那题目有错咯 ……

成为一名真正合格的程序设计人员,是我的梦想……我希望我的梦一直保持下去,直到我从这个世界消失……
2012-02-26 22:38
非死亡!
Rank: 8Rank: 8
来 自:四川
等 级:蝙蝠侠
帖 子:179
专家分:760
注 册:2011-10-31
收藏
得分:0 
求分  指针和指针指向的值混淆了  呵呵 路过哈

能力 技巧
2012-02-26 22:55
VICTER
Rank: 2
等 级:论坛游民
帖 子:14
专家分:27
注 册:2011-12-27
收藏
得分:5 
printf("%x\n", p);  这个 P 是 地址 的 值吧
%x  好像是 16精制  这是 196?  lz  你有运行过吗~?
printf("%x\n", p + 9);  这是什么意思~?
p+9  地址 加9 一个 int 2个字节  那么 是多少 这是 加减法 只要运行一下就知道了的 lz
可是我上机运行的时候给出了是12ff24 12ff48 这样的值?   认真算一下 不就是 正确的吗·?
*p
 才是 数组中的 元素的值
2012-02-26 22:58
sunlang1234
Rank: 2
等 级:论坛游民
帖 子:47
专家分:77
注 册:2012-2-24
收藏
得分:10 
p就是a的首地址,也就是a[0]的地址,a+9就是a[9]的地址,如果一个int类型占2个字节,那么指针变量也就占2个字节,a[0]的地址为194,,a[9]的地址就是0x194+0x(2*9)=1a6.
2012-02-26 23:49
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:5 
还是楼上的MM脑袋转的快,194是那课本假设的,我看了半天成丈二和尚了。好一个‘若’字了得啊!

梅尚程荀
马谭杨奚







                                                       
2012-02-27 10:13
自强
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:132
专家分:130
注 册:2011-10-3
收藏
得分:0 
回复 7楼 VICTER
呵呵 题目是那样说的 我刚开始以为是不是答案错了 不过我现在明白了
答案 1a6是怎么来的了 因为一个int变量占两个字节 p指针 指向a[0] 假设它的地址是194(十六进制的)
那么p+9 指针移动到最后一个元素 a[9] 那么它此时的地址就是 194 + ( 2 * 9 ) 换成十六进制的表示 就是1a6

成为一名真正合格的程序设计人员,是我的梦想……我希望我的梦一直保持下去,直到我从这个世界消失……
2012-02-27 12:25
快速回复:请教一道题的解析?
数据加载中...
 
   



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

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