将变量的地址打印为字符串
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'.
的空终止字符串
在熟悉我正在学习的操作系统课程时,我遇到了这段代码,但我无法理解输出的第二部分 (%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'.
的空终止字符串