我学习 C 语言是为了好玩。在我的第一段代码中(通过“艰难地学习 C”),我故意在 printf 语句中省略了变量。
#include <stdio.h>
int main() {
int age = 3;
printf("I am %d years old.\n");
return 0;
}
很简单。它按我的预期编制和抛出 yield 。但是当我愚蠢地运行损坏的程序时,我得到了一个不寻常的输出:
I am 1476430496 years old.
每次我运行它,数字都不同但相似。我想这可能是“年龄”的内存地址,所以我尝试了:
printf("age is %p\n", &age);
但事实并非如此:
I am 1570798240 years old.
age is 0x7fff5da07a78
所以我很好奇。这个数字是多少?它从何而来?我尝试了不同的输出类型(%s、%e、%u),但事情变得更奇怪了。
作为后续问题,当我尝试不带变量的 %p 时,我确实得到了一个内存地址。
I am 0x7fff53e8caa0 years old.
我也很好奇这个地址是从哪里来的?有什么办法可以让我看到里面可能有什么吗?
感谢您抽出宝贵时间和提供的任何帮助!
迈克
我是一名优秀的程序员,十分优秀!