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

Printing address of a variable as a string

在熟悉我正在学习的操作系统课程时,我遇到了这段代码,但我无法理解输出的第二部分 (%s - &i)。

unsigned int i = 0x00646c72;
printf("H%x Wo%s", 57616, &i);

这会产生以下输出:

He110 World

第一部分只是一个数字的十六进制表示,i 的地址是如何最终变成 'rld' 的?

地址最终不是 'rld'。

之所以有效,是因为 %s 需要一个指向 char 的指针(指向以 null 结尾的 char 字符串)。又因为&i指向i,也​​就是字节0x72、0x6C、0x64、0x00。这是ascii字符代码'r'、'l'、'd'.

的空终止字符串