|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 好久没看C基础了,各位分享道C基础题,试试你C基础过关了没
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
2442
人关注过本帖,
1
人收藏
标题:
好久没看C基础了,各位分享道C基础题,试试你C基础过关了没
只看楼主
加入收藏
遗矢的老人
来 自:成都
等 级:
蜘蛛侠
威 望:
7
帖 子:325
专家分:1131
注 册:2012-7-20
结帖率:
100%
楼主
收藏
(1)
已结贴
√
问题点数:100 回复次数:44
好久没看C基础了,各位分享道C基础题,试试你C基础过关了没
#include <stdio.h>
int main()
{
int a[] = {1,2,3,4,5};
int *p = (int *)((int)a + 1);
printf("%x\n", *p);
}
提示一下:绝对不是错误题啊!第一个解释完全正确(不是指打印结果)的得50分,后面的看情况给分
搜索更多相关主题的帖子:
include
基础
2012-10-18 15:44
举报帖子
使用道具
赠送鲜花
zklhp
来 自:china
等 级:
贵宾
威 望:
254
帖 子:11485
专家分:33241
注 册:2007-7-10
第
2
楼
收藏
得分:0
凑热闹
2012-10-18 16:18
举报帖子
使用道具
赠送鲜花
senpujituan
等 级:
业余侠客
帖 子:91
专家分:203
注 册:2012-6-29
第
3
楼
收藏
得分:5
(int)a+1只是单纯意义上的数字加1,不是下个元素。后面不知道了!!求解
2012-10-18 16:26
举报帖子
使用道具
赠送鲜花
阿鞠尼
来 自:首尔
等 级:
蒙面侠
威 望:
5
帖 子:1467
专家分:4442
注 册:2012-5-30
第
4
楼
收藏
得分:5
a
即&a[0]
(int)&a[0]即把地址转换成整形
再加上1
再强制转换成int型指针
把这个指针赋值给p
p最后输出的是a的地址再加上1
喜欢睡觉 却经常熬夜
2012-10-18 16:31
举报帖子
使用道具
赠送鲜花
遗矢的老人
来 自:成都
等 级:
蜘蛛侠
威 望:
7
帖 子:325
专家分:1131
注 册:2012-7-20
第
5
楼
收藏
得分:0
回复 4楼 阿鞠尼
解释结果,你那么说那值不就随地址的变化而变化了,那样还有什么意义呢
[
本帖最后由 遗矢的老人 于 2012-10-18 16:55 编辑
]
2012-10-18 16:44
举报帖子
使用道具
赠送鲜花
核晴核理
来 自:北京
等 级:
论坛游侠
帖 子:129
专家分:169
注 册:2012-6-14
第
6
楼
收藏
得分:0
回复 3楼 senpujituan
我觉得前面的都对,但是输出的不是a的地址加上1,而是a的地址加上1后的新地址里面的值,并且以八进制形式输出
2012-10-18 16:51
举报帖子
使用道具
赠送鲜花
我菜119
等 级:
青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
第
7
楼
收藏
得分:0
这道题我个人觉得有点问题,比如说在64位机中的地址长度为64位,而int类型为32位长,这样讲a转换为int时,会出现长度的截断,会出问题。
愿用余生致力编程
2012-10-18 17:00
举报帖子
使用道具
赠送鲜花
遗矢的老人
来 自:成都
等 级:
蜘蛛侠
威 望:
7
帖 子:325
专家分:1131
注 册:2012-7-20
第
8
楼
收藏
得分:0
回复 6楼 核晴核理
%x不是八进制,而是十六进制,所以这题我都降低难度了,应该以%d形式打印的,那就更模糊了
[
本帖最后由 遗矢的老人 于 2012-10-18 17:07 编辑
]
2012-10-18 17:05
举报帖子
使用道具
赠送鲜花
我菜119
等 级:
青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
第
9
楼
收藏
得分:0
继续...
上述问题不去考虑的话,比如说a = 0x100即指向地址为100处,a+1向后偏移一个字节位置,指向0x101处,
数值1的二进制:00000000 00000000 00000000 00000001
数值2的二进制:00000000 00000000 00000000 00000010
内存结构:00000000
00000000
00000000 00000001 00000000 00000000 00000000 00000010(
红色
表示此时指针指向的位置)
p表示一个int类型的指针,占据四个字节,这样p指向的内容为(
绿色
):00000000
00000000 00000000 00000001 00000000
00000000 00000000 00000010
愿用余生致力编程
2012-10-18 17:06
举报帖子
使用道具
赠送鲜花
星闪夜空
等 级:
论坛游侠
帖 子:50
专家分:119
注 册:2012-9-15
第
10
楼
收藏
得分:0
回复 楼主 遗矢的老人
版主,你这不是坑人吗?研究了半天也只知道p的地址是a的地址加1,但奇怪的是无论a[0]和a[2]的值怎么改变,p中存放的值也不会改变,说明p中的值不是随机的,且不受a[0]和a[1]的影响。我快崩溃了,是不是俺的C语言还很菜啊,版主,求解释!!!
2012-10-18 17:07
举报帖子
使用道具
赠送鲜花
45
1/5页
1
2
3
4
5
快速回复:
好久没看C基础了,各位分享道C基础题,试试你C基础过关了没
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.023561 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved