【每日一题讲解】数组名加减的问题
本帖最后由 山外メ雲ジ 于 2013-11-20 00:31 编辑//运行以下程序,求运算结果
char a={1,2,3,4};
char *ptr=(int*)(&a+1);
printf("%d",*(ptr-1));
//可供选择的答案:
//A.1
//B.2
//C.4
//D.随机值
:lol国际惯例,答案回复可见。我们出题目的目的,是给大家一个思考的机会,不要题目都不去思考,直接看答案哦,那样学不了东西的。
大家回复的时候,把答案也写上去哦。
**** Hidden Message *****
昨天的题目,大家可以看看结果:
【每日一题讲解】指针操作的问题 - 软件设计区 - 野火初学123论坛 http://firebbs.cn/forum.php?mod=viewthread&tid=1134
回答正确了,看看分析是否我想的那样:lol 写的真的很不错 基础不牢固呀,学习了 走过路过,不能错过:victory: 走过路过,好好学习C指针
答错了 看看解析 走过路过,不能错过:victory: 学习学习! - - 答对了。。不过看看思路。。 学习下,万能的火哥 a【4】数组里总共只有四个元素,从a到a,a出现在这个过程中不违反规定吗? 回答错了,来看看分析过程 A走过路过,不能错过:victory: 难道是A吗?我选的D C。。。。。。 真棒!!非常感谢:handshake C:\Users\JudeScorpio\Desktop\QQ图片20131121081626.jpg
问什么在VC6.0编译器下,调试环境中,&a+1 和a+1 的 地址都是一样的? JudeScorpio 发表于 2013-11-21 08:19 static/image/common/back.gif
问什么在VC6.0编译器下,调试环境中,&a+1 和a+1 的 地址都是一样的?
额,怎么上图? 真棒!!非常感谢:handshake 真棒!!非常感谢:handshake 答错了。。。。。。。。。。。。。 我选择的是A 1 错了不知道原因求教 自己分析了一下感觉是A
可是编程验证后确实C
应该是&a+1的事。不知道这个1,代表多少个地址单元。。。 随机的把最后是把一个地址 放进去 了啊
感谢每日一题学习了 答案是4,:) 真棒!!非常感谢:handshake 真棒!!非常感谢:handshake 这道题前两天回答了两次都错了,而且发现每次题目都有些差别,昨天数组类型是int a;指针类型int *ptr。今天不一样了。 天天都在打酱油!! 又错了555555555555555555555555 为啥不是A啊。。。。。 火哥每天这里都能收到益处我刚学c语言,每天早上起来第一件事就是看一看每日一题然后路上想嘻嘻嘻 我选的B,不会做啊!! 真棒!!非常感谢:handshake 真棒!!非常感谢:handshake 1 我不知道取地址的运算优先极是不是要大于加号,我选a首地址+1,*ptr=2 *(ptr-1)=1,所以选A 能不能再解释的详细一点,完全不懂 D,&a+1是把地址往后移动了一个字节,然后强制转换成指向int类型的指针,然后将指针减去一个int类型的长度,就是4,所以答案是随机的 STC89C52 发表于 2013-11-22 11:53 static/image/common/back.gif
火哥每天这里都能收到益处我刚学c语言,每天早上起来第一件事就是看一看每日一题然后路上想嘻嘻嘻
:)我们的论坛就是专为初学者而生 yukaigogogo 发表于 2013-11-23 15:52 static/image/common/back.gif
能不能再解释的详细一点,完全不懂
a 是 (char*) 类型的
&a 是 char (*) 类型的
a + 1 就是 (int)a + sizeof(char) = a 的地址值 加 1 ,即 a 的地址
&a + 1 就是 (int)a + sizeof(char (*) ) = a的地址值 + 4*1 ,即 a 的地址 JudeScorpio 发表于 2013-11-21 08:19 static/image/common/back.gif
问什么在VC6.0编译器下,调试环境中,&a+1 和a+1 的 地址都是一样的?
图片不能直接复制过来,要 点击上面的上传图片工具(切换到高级模式)
在调试界面,确实看到的值不对(脱离了上下文,导致无法识别真正的类型)。不过,你看真正的赋值,结果就出来
B吧...少于10字符- - 抢沙发~我来顶楼主的:loveliness:抢沙发~我来顶楼主的:loveliness: 随机值吧,输出的是a【1】的地址减1 吧
选择D。输出指针指向对象的长度变了:) 学习了真棒!!非常感谢真棒!!非常感谢真棒!!非常感谢真棒!!非常感谢 逻辑上认为是4,即答案为C,