小编Cod*_*ron的帖子

为什么这段涉及数组和指针的代码会有这样的行为?

有人问我以下代码的输出是什么:

int a[5] = { 1, 3, 5, 7, 9 };
int *p = (int *)(&a + 1);
printf("%d, %d", *(a + 1), *(p - 1));
Run Code Online (Sandbox Code Playgroud)
  1. 3, 9
  2. 错误
  3. 3, 1
  4. 2, 1

答案是NO.1


很容易得到的*(a+1)是3。

但是 和int *p = (int *)(&a + 1);*(p - 1)

c language-lawyer

34
推荐指数
4
解决办法
3647
查看次数

标签 统计

c ×1

language-lawyer ×1