打印的地址i和j.
#include<stdio.h>
int i,j;
void main()
{
printf("%u %u",&i,&j);
getch();
}
Run Code Online (Sandbox Code Playgroud)
输出:
4214868 4214864
Run Code Online (Sandbox Code Playgroud)
#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.