2012年11月23号,我冒着寒风细雨,几经周折到了二号线边上的浦东软件园,目的:高通面试。
话说接到了高通的面试通知,本身是挺激动人心的,崇明岛到上海浦东,虽然都是上海范围,但何其远也。
后来发现这个面试是被忽悠了,这些都暂且不表。到了先做的题目。记一下了几题,在这里趁新鲜,写下来。(C和C++的)
1. ((int *)(0)+5)的值?
这个后来我在code里跑了一下是:0x14-----我想不明白是为什么,求解答!
2. union a { int i; char c[2]; }
u1;int main( )
{ u1.c[0]=10;
u1.c[1]=1;
bs = u1.i;
//expected
output 266
cout<<"Union test:"<<u1.i<<" "<<bs<<endl;
return 0;}
以上代码的输出结果? ----这个是:266.我倒是选择对了。原因如下:Union是声明一块内存,里面定义的对象公用的。也就是说:union a,声明后,sizeof(a)的大小实际为:4(int的大小)。将char c[]赋值,也就是从分配地址空间的低位向高位赋值,变成:00000000 00000000 00000001 00001010还有一些,是指针啊,或者sizeof和strlen之类的,考的都是基础,但是比较容易错。的确是这样,汗!