第一题:\141的值是"a"(a的8进制ASCII码值是141),\\的值是"\",所以s打印出来就是\141aabc,当然后面有一个\t,所以长度是9。
第二题:32位机器中,int值占4个字节,这里char占4个字节(由于32位机器按4字节对齐,char占一个字节后,剩下的3个字节不足以放下4个字节的float,所以这里char后面的3个字节会被浪费,看起来char占了4个字节),float占4个字节。
union里面的所有数据一起占用一块内存,此内存为union内占用内存最多的数据的大小,也就是int[2]的大小,所以union占8个字节。
加起来就是20个字节。
不是你把题抄错了,就是没有正确答案,或者没说明机器是多少位的机器。现在一般不说明机器的位数,默认情况下都是32位的。
第三题:ps=s后,ps会指向s的第一行第一列的位置,ps+1和*(ps+1)都等于s第二行第一列的地址,对ps的操作都是对内存地址的操作,答案中只有ps[ ][ ]能取到s中的元素。
第四题:因为pb比b1大3,所以while会循环3次,第一次因为*bp 从第三个字符开始,所以*bp = “ddwer”,所以b2=“ddwer”,第二次b2=“oddwer”,第三次b2=“goddwer”,所以strlen(b2)最终等于7。
第五题:答案是3,ASCII值中“\08”表示空格,所以s实际上等于“012xy”,而n记录字符值在0到9之间的字符的个数,所以n=3。
楼上给出答案了,字符串判断是以'\0'结束,而 i f 判断找出字符值在0到9之间的字符。
第五题答案是3