> For the complete documentation index, see [llms.txt](https://ryukiedev.gitbook.io/wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ryukiedev.gitbook.io/wiki/zhi-shi-dian-shu-li/mian-shi-ti-ji-lucyu-yan.md).

# 02 面试题记录-C语言

## 001\_int *ptr=(int* )(\&a+1)

下面的输出结果是什么?

```
int main()
{
    int a[5]={1,2,3,4,5};
    int *ptr=(int *)(&a+1);
    printf("%d,%d\n",*(a+1),*(ptr-1));
}
```

* \*(a+1)
  * 这里吧`a`当成一个指针
  * a+1 = a + sizeof(int)
  * `a+1`指向`a`的下一个整形地址即 `&a[1]`
* (\&a+1)
  * 先获取a的地址
  * `+1`再获取下一个与`a`同类型(`int[5]`)的相邻地址
  * \&a+1 = \&a + sizeof(a)
  * 即\&a\[5],a最后一个元素的下一个地址
* \*(ptr-1)
  * 同\*(a+1)原理
  * 指向了\&a\[5]前一个元素地址
  * 即\&a\[4]
* 结果
  * 2,5
