116 字
1 分钟
面试题记录-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