Comment on page
02 面试题记录-C语言
下面的输出结果是什么?
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
Last modified 2yr ago