每天3道面试题 12/16

2016-12-16 18:04 阅读 1,083 次 评论 0 条

下列程序的输出结果是多少,简要说明一下?

答案 02 29 00 00分析memset在这里表示初始化数组,结构体位域占2个字节,其中第一个成员占1个字节,后面三个成员占1个字节。所以pst-A = 2独占一个字节,16进制打印就是02;第二个字节中结构体成员分别占用的位数为:1,2,3。而数组内表示的数分别是3,4,5,二进制分别为11,100,101,因为各自只占1,2,3位,所以去除高位之后变成:1,00,101。低位放低地址,所以第二个字节放的数就为:00101001,即16进制的29;数组中后两个字节被memset清0,所以结果都为0 。

下列程序的输出结果是多少,请分析一下?

答案8  17分析j = 4,m= 1时,在fun函数内部,static只会执行一次,依次执行:m = 0,i= 2,i = 3,m = 8;第二次调用fun时,static不会执行,依次执行:i = 3,m = 8,i = 12,m = 17 。

请找出下列程序的错误之处,并说明?

改错代码里的问题在于函数gets()的使用,这个函数从stdin接收一个字符串而不检查它所复制的缓存的容积,这可能会导致缓存溢出。推荐使用标准函数fgets()代替。

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:每天3道面试题 12/16 | 术与道的分享
分类:剑指Offer 标签:,
1024do.com导航_术与道导航平台

发表评论


表情