[经典面试题的回答技巧]无论是企业的招聘选拔还是应聘者,对面试的问题,一个是问,一个是答;如何能够从面试题的问与答中,判别出应聘者的个人素养、心理倾向和工作意愿呢?下面我们来看看求职者是如何回答者...+阅读
#pragma pack(8)
struct s1
{
short a;
long b;
};
struct s2
{
char c;
s1 d;
long long e;
};
#pragma pack()
问:
1.sizeof(s2) = ?
2.s2的c后面空了几个字节接着是d?
答案:
sizeof(S2)结果为24.
成员对齐有一个重要的条件,即每个成员分别对齐.即每个成员按自己的方式对齐.
也就是说上面虽然指定了按8字节对齐,但并不是所有的成员都是以8字节对齐.其对齐的规则是,每个成员按其类型的对齐参数(通常是这个类型的大小)和指定对齐参数(这里是8字节)中较小的一个对齐.并且结构的长度必须为所用过的所有对齐参数的整数倍,不够就补空字节.
S1中,成员a是1字节默认按1字节对齐,指定对齐参数为8,这两个值中取1,a按1字节对齐;成员b是4个字节,默认是按4字节对齐,这时就按4字节对齐,所以sizeof(S1)应该为8;
S2中,c和S1中的a一样,按1字节对齐,而d 是个结构,它是8个字节,它按什么对齐呢?对于结构来说,它的默认对齐方式就是它的所有成员使用的对齐参数中最大的一个,S1的就是4.所以,成员d就是按4字节对齐.成员e是8个字节,它是默认按8字节对齐,和指定的一样,所以它对到8字节的边界上,这时,已经使用了12个字节了,所以又添加了4个字节的空,从第16个字节开始放置成员e.这时,长度为24,已经可以被8(成员e按8字节对齐)整除.这样,一共使用了24个字节.
a b
S1的内存布局:11**,1111,
c S1.a S1.b d
S2的内存布局:1***,11**,1111,****11111111
这里有三点很重要:
1.每个成员分别按自己的方式对齐,并能最小化长度
2.复杂类型(如结构)的默认对齐方式是它最长的成员的对齐方式,这样在成员是复杂类型时,可以最小化长度
3.对齐后的长度必须是成员中最大的对齐参数的整数倍,这样在处理数组时可以保证每一项都边界对齐
补充一下,对于数组,比如:
char a[3];这种,它的对齐方式和分别写3个char是一样的.也就是说它还是按1个字节对齐.
如果写: typedef char Array3[3];
Array3这种类型的对齐方式还是按1个字节对齐,而不是按它的长度.
不论类型是什么,对齐的边界一定是1,2,4,8,16,32,64....中的一个.
延伸阅读:
证券业务营销笔试题目证券业务营销类笔试题精选,仅供大家练习。 1.全面营销就是将产品、技术、管理、销售、服务等公司经营的各个方面都视为营销的一个环节,由这些环节构成一个为满足客户的需要服务...
发散思维类面试题目发散思维类的面试题目怎么回答比较好呢? 发散思维又称辐射思维、放射思维、多向思维、扩散思维或求异思维,是指从一个目标出发,沿着各种不同的途径去思考。发散思维是创造性思...
软件测试英文面试题目求职者在参加英语面试时需要好好准备一下,下面我们来看看有关英文面试会问到的一些题目。1.要有一份高质量的自我介绍2.同时面试的人员,对你以前的测试工作经历会比较感兴趣,会...
2012年苏果面试题目1.这个职务需要出差,你能适应吗? (可以,没问题) 2.苏果面试题:在纸上写了武汉二字,让我指出武汉周边其他城市所处位置?(瞎蒙,都错了) 3.为何辞职? 4.苏果面试题:如果公司派你去一个城...
结束面试的完美面试题在面试结束前,大多数的主考官都会丢问题给求职者,最常见的就是:你有没有什么问题或疑问,想要提出来的?无论求职者是否有提出问题,其实,这个问题背后的真正含意,通常是主考官用来测试...
2011年质检员笔试题目以下是2011年质检员笔试题目,现分享给大家练习练习。一章 概述 1、国家验收标准:一个标准、16个规范(P9+建筑节能验收规范) 2、省验收及控制标准:住宅工程控制标准、建筑节能验收...
税法类笔试题目以下分享是笔试题目是与税法有关的,大家敬请阅读: 税法类: 不能转嫁的税的类型 矿石进口需缴税(关税,增值税) 增值税一般纳税人符合的条件 对于纳税人的要求(在中国境内有住所或者...
活学活用的8个经典面试题面试过程中,面试官会向应聘者发问,而应聘者的回答将成为面试官考虑是否接受他的重要依据。对应聘者而言,了解这些问题背后的猫腻至关重要。本文对面试中经常出现的一些典型问题...
6道经典英文面试题6道经典英文面试题 First One: Work experience work experience is the type of work youve done in the past. If you hent started working yet you can say Right now I...