|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 一个很细的问题,你注意到了吗?
我的收件箱(0)
共有
1476
人关注过本帖,
2
人收藏
标题:
一个很细的问题,你注意到了吗?
取消只看楼主
加入收藏
luyi_footman
等 级:
论坛游侠
帖 子:32
专家分:100
注 册:2011-7-14
楼主
收藏
(2)
问题点数:0 回复次数:6
一个很细的问题,你注意到了吗?
程序代码:
main() {
int
a[
5
]={
1
,
2
,
3
,
4
,
5
};
int
*ptr=(
int
*)(&a+
1
); printf(
"
%d,%d
"
,*(a+
1
),*(ptr-
1
)); }
输出:?,?
请当做一个现场笔试题来做,不要CTR+C哦~
[
本帖最后由 luyi_footman 于 2011-8-25 18:36 编辑
]
天道酬勤!
2011-08-25 18:35
举报帖子
使用道具
赠送鲜花
luyi_footman
等 级:
论坛游侠
帖 子:32
专家分:100
注 册:2011-7-14
第
2
楼
收藏
得分:0
回复 2楼 voidx
哈~所以我要求不能之前编译再作答,不过呢,如果实在是最后忍不住编译了下知道结果了,最好能说出个所以然来。我想,只要每个看过这贴的朋友都认真的思考的话,肯定会由收获的。如果大家反响效果好的话,我以后会多发起注入此类的帖子的。
天道酬勤!
2011-08-25 18:45
举报帖子
使用道具
赠送鲜花
luyi_footman
等 级:
论坛游侠
帖 子:32
专家分:100
注 册:2011-7-14
第
3
楼
收藏
得分:0
回复 7楼 Luminal
恩,谢谢你的回复,而且你的解释也很专业,不过我想就你的回复补充两点我的看法
1:当ptr指向a[4]的下一个地址时应该不能解释为越界,ptr作为一个指向整型数的指针可以被初始化为指向任何地址(当然是内存范围内),所以个人理解不应该是越界,而只是一个不寻常的指针初始化而已。
2:我出这样一个题目绝没有难为初学者的意思,因为自己本身就是一个初学者。
天道酬勤!
2011-08-25 19:13
举报帖子
使用道具
赠送鲜花
luyi_footman
等 级:
论坛游侠
帖 子:32
专家分:100
注 册:2011-7-14
第
4
楼
收藏
得分:0
回复 12楼 a9517495424
不会的,应该是你copy的过程中有误,仔细检查下看看。
天道酬勤!
2011-08-25 19:28
举报帖子
使用道具
赠送鲜花
luyi_footman
等 级:
论坛游侠
帖 子:32
专家分:100
注 册:2011-7-14
第
5
楼
收藏
得分:0
回复 11楼 voidx
我也试了下直接赋值0xffffffff,我在dev里编译了下没有报错,但是我在linux下用GCC编译就报错了,如果改成ptr = (unsigned int *)0xffffffff就不报错了。所以综合来看,应该是编译不同的话,处理方式也不同。不过从编程严谨的角度说,不应该把内存之外的地址赋给一个指针,就算非要这么这么做,也应该把这个地址转化为unsigned int *类型。个人理解。
天道酬勤!
2011-08-25 19:32
举报帖子
使用道具
赠送鲜花
luyi_footman
等 级:
论坛游侠
帖 子:32
专家分:100
注 册:2011-7-14
第
6
楼
收藏
得分:0
回复 15楼 Luminal
哈~不管是越界还是这种不寻常的初始化,如果程序要访问这个地址的值,将是一个灾难性的操作,作为程序员,不应犯这种错误的。
初学者也好,专业人士也罢,关键是一个心态。
天道酬勤!
2011-08-25 19:35
举报帖子
使用道具
赠送鲜花
luyi_footman
等 级:
论坛游侠
帖 子:32
专家分:100
注 册:2011-7-14
第
7
楼
收藏
得分:0
回复 23楼 beyondyf
我发现他的解释更好,&a是一个二级指针,对的,这样理解起来很轻松。学习了!
天道酬勤!
2011-08-26 19:46
举报帖子
使用道具
赠送鲜花
7
1/1页
1
快速回复:
一个很细的问题,你注意到了吗?
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019612 second(s), 10 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved