不行吗
我明白了,
printf("%s", &s);
传入s的起始地址给printf()函数,
再从起始地址开始,按每一个字节打印一个字母,
每一个字节存放一个两位的16进制的数,
而在8086系列机上,主存堆栈是向上生长的结构,
所以存放的结构是:
0x79 <---Top
0x70
0x70
0x61
0x68 <---Bottom
打印的时侯就是按字母的ASCII 打印,
但int 类型所占的空间是二个字节
long 类型所占的空间是四个字节,
所以题目得改一下:
#include <stdio.h>
main()
{
struct {long int m; int n;} s = {0x70706168, 0x79};
printf("%s", &s);
}