| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 12107 人关注过本帖, 2 人收藏
标题:哥出几个 c 语言 基础题, 测测你可能过 2 级
只看楼主 加入收藏
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
收藏
得分:0 
来看LZ的飘过

想象力征服世界
2010-03-21 12:48
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:0 
回复 50楼 BlueGuy
我觉得超级有用,可是普通教材上都没有

————————————————————————————————人不是我杀的————————————————————————————
那我再说说第一题
先说原则:
为了提高CPU的存储速度,VC对一些变量的起始地址做了“对齐”处理。在默认情况下,VC规定各成员变量存放的起始地址相对于结构的起始地址的偏移量必须为该变量的类型所占用的字节数的倍数
所以,我们先抛开一些此处不讨论的限制
1.哪一位的系统(16、32、64和传说中的128)
2.编译器(不一样的编译器有不一样答案)
3.看官来补充...

————————————————————————————偷偷分割下——————————————————————————————————
原则通俗的讲,我认为就是分配结构体各个成员地址的时候,起始地址要是该类型所占用字节的整数倍,从而对齐
,举例:   
(1)
struct ooxx
{    int a;
     char b;
};
    sizeof(ooxx) = 5    int占4    char因为本身是占1字节的类型,所以它的起始地址只要是1的倍数即可(哈哈,什么整数都可以嘛),所以给他5咯,所以4 + 1 = 5。
(2)
struct ooxx
{    char b;
     int a;
};
    sizeof(ooxx) = 8    char占1    那么它下一个就是地址2,因为int占4字节,如以2起始,那么2 + 4 =6,6和4不是整数倍关系,但是也不能使结束地址为4,因为char占据了1,而int又要占4个,起码是大于等于5嘛,所以我们要找的是,大于或等于5的最小4的整数倍数字,显然可得(加个亮,特别喜欢这4个字):Is 8。
    为了让int的结束地址到8的位置上,就要让前面的东东占4字节。所以原来只占1字节的char华丽丽的变身占了4字节(便宜这小子还浪费了内存,不过按原则所述,提高了CPU的存储速度)   


———————————————————————————————明目张胆的分割线——————————————————————————

类似的举例不讲了
(3)
struct ooxx
{    int a;
     char b;
     int c;
};        sizeof(ooxx) = 4 + 4 + 4 = 12;
(4)
struct ooxx
{    char a;
     char b;
     int c;
};        sizeof(ooxx) = 1 + 3 + 4 = 8或者2 + 2 +4 = 8或者3 + 1 + 4 = 8(我不知道2个char实际该怎么分配,高人来指点)
(5)
打字发现个规律也,按原则来算,struct占用字节数,必须是最大成员本身占用字节数的整数倍,因为要对齐嘛
(6)
你怎么这样啊?我都举例这么多了,自己出题自己算吧...

吃饭去,bye~~~~

我可好玩啦...不信你玩玩^_^
2010-03-21 13:04
libingxuan1
Rank: 2
等 级:论坛游民
帖 子:10
专家分:11
注 册:2010-3-10
收藏
得分:0 
高手。。。
2010-03-21 13:05
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:0 
我什么也没说~~

[ 本帖最后由 pgy 于 2010-3-21 13:38 编辑 ]

我可好玩啦...不信你玩玩^_^
2010-03-21 13:18
shiliangzdm
Rank: 1
来 自:四川
等 级:新手上路
帖 子:22
专家分:8
注 册:2010-3-21
收藏
得分:0 
完了,我不会啊
2010-03-21 18:45
佳嘉
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:534
专家分:1383
注 册:2009-11-8
收藏
得分:0 
回复 54楼 pgy
别说太复杂了,考二级没这么难的,说难了会打击别人的!
2010-03-21 20:47
MICHEALJORRY
Rank: 1
等 级:新手上路
帖 子:16
专家分:7
注 册:2010-3-17
收藏
得分:0 
不是吧!!! 太难了

编译新手
2010-03-22 10:49
seep666
Rank: 2
等 级:论坛游民
帖 子:91
专家分:14
注 册:2010-3-18
收藏
得分:0 
这是C,还是C++,C#啊
2010-03-22 11:18
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 58楼 seep666
c 啊

我就是真命天子,顺我者生,逆我者死!
2010-03-22 11:26
lingshiying
Rank: 2
等 级:论坛游民
帖 子:12
专家分:21
注 册:2010-3-5
收藏
得分:0 
2、是32吧
2010-03-22 16:16
快速回复:哥出几个 c 语言 基础题, 测测你可能过 2 级
数据加载中...
 
   



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

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