Kei*_*son 5

#include<stdio.h>
int i,j;
void main()
Run Code Online (Sandbox Code Playgroud)

这是错的.(这有点过于简单化,但它足够接近.)正确的声明是int main(void).

{
    printf("%u %u",&i,&j); 
Run Code Online (Sandbox Code Playgroud)

"%u"格式需要类型的参数unsigned int.传递int*指针值会导致未定义的行为.打印地址的正确方法是:

printf("%p %p\n", (void*)&i, (void*)&j);
Run Code Online (Sandbox Code Playgroud)

请注意\n:程序的输出应以换行符结尾.

    getch();
Run Code Online (Sandbox Code Playgroud)

没有getch()声明的功能<stdio.h>.如果您没有在该调用上获得至少一个警告,您应该了解如何在编译器中启用更好的诊断.

您可能正在尝试调用getch()Windows(和DOS?)特定<conio.h>标头中声明的函数.这使您的程序不必要地不可移植.

}
Run Code Online (Sandbox Code Playgroud)

至于它打印的值,C标准没有说明变量的相对地址.编译器可以以任何喜欢的方式自由分配它们.并且没有充分的理由让你关心是否在记忆i之前或之后分配j.