在C中,为什么x [1]中的以下结果为2?
int a = 2, x;
...
printf("x[1] = ", &x[1])
答案 0 :(得分:1)
没有。它导致未定义的行为,其中任何可能发生。您无法以定义的方式访问数组末尾之外的元素。
最有可能发生的事情是,a
只是在堆栈上方“{1}}”,这导致x
具有与x[1]
相同的地址,但它是没有保证。
当然,这是假设您的a
是拼写错误。就目前而言,它甚至都没有编译。我假设这是一个错字,因为问题标题只是询问printf
的值而不是输出。
要使其发挥作用,您必须使用以下内容:
x[1]
还在我的系统上打印printf ("x[1] = %d\n", (&x)[1]);
,但可能在其他地方做一些完全不同的事情。