它没有。它会导致任何可能发生的未定义行为。您不能以定义的方式访问数组末尾之外的元素。
最有可能发生的是它a
只是x
在堆栈上的“上方”,这导致与x[1]
具有相同的地址a
,但这绝不是保证。
当然,这是假设您printf
的错字。就目前而言,它甚至无法编译。我假设这是一个错字,因为问题标题只是询问价值x[1]
而不是输出。
为了让它工作,你必须使用类似的东西:
printf ("x[1] = %d\n", (&x)[1]);
它也可以在我的系统上打印2
,但在其他地方可能会做一些完全不同的事情。