C变量默认初始化

时间:2012-11-03 02:50:45

标签: c

在C中,为什么x [1]中的以下结果为2?

int a = 2, x;
...
printf("x[1] = ", &x[1])

1 个答案:

答案 0 :(得分:1)

没有。它导致未定义的行为,其中任何可能发生。您无法以定义的方式访问数组末尾之外的元素。

最有可能发生的事情是,a只是在堆栈上方“{1}}”,这导致x具有与x[1]相同的地址,但它是没有保证。

当然,这是假设您的a是拼写错误。就目前而言,它甚至都没有编译。我假设这是一个错字,因为问题标题只是询问printf的值而不是输出。

要使其发挥作用,您必须使用以下内容:

x[1]

还在我的系统上打印printf ("x[1] = %d\n", (&x)[1]); ,但可能在其他地方做一些完全不同的事情。