山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省
笔试题2
这里的0x1是16进制的1 跟十进制的1一样
这道题考察的是:指针类型决定了指针的运算
p是上面结构体的指针 它指向的大小结果是20个字节 指针+1等于直接+的20
0x100000加20以后就等于0x100014
所以p+0x1打印的就是0x100014
unsigned long其实是强制类型转换了 把p+0x1强制类型转换成整型类型了它这个时候是一个无符号长整型了 转换成整型以后加1加的就是1
这个时候它的结果就是 0x100001
最后一个强制转换了成了unsigned int* 无符号的整型指针+1 需要跳过一个整型变量 这里加1应该是加的4
所以最后结果打印0x100004
总结:
如果它是一个结构体指针加1就是加了一个结构体大小
如果是一个整型指针加1就是加4
如果是一个字符指针加1就是跳过一个字符 就是加1