C 将变量的地址打印为字符串

C 将变量的地址打印为字符串,c,operating-system,hex,printf,C,Operating System,Hex,Printf,在熟悉我正在学习的操作系统课程时,我偶然遇到了这段代码,我很难理解打印的第二部分(%s-&I) 这将产生以下输出: He110 World 第一部分只是一个数字的十六进制表示,但是i的地址怎么会变成'rld' 因为%s需要指向char的指针(指向以null结尾的char字符串),所以它可以工作。因为&i指向i,即字节0x72、0x6C、0x64、0x00。这是ascii字符代码“r”、“l”、“d”的以null结尾的字符串。(57616)16=E110,这解释了He110 He110 Worl

在熟悉我正在学习的操作系统课程时,我偶然遇到了这段代码,我很难理解打印的第二部分(%s-&I)

这将产生以下输出:

He110 World

第一部分只是一个数字的十六进制表示,但是
i
的地址怎么会变成
'rld'

因为%s需要指向char的指针(指向以null结尾的char字符串),所以它可以工作。因为&i指向i,即字节0x72、0x6C、0x64、0x00。这是ascii字符代码“r”、“l”、“d”的以null结尾的字符串。

(57616)16=E110,这解释了He110
He110 World