JINGZMR 2022-10-27 23:02 采纳率: 63.6%
浏览 20
已结题

指向分数组的指针(简单问题)

&a是数组的首地址,但&a+1又是什么意思,结尾的*(p1-4)又为什么会输出 8 呀
(在下C语言入门,望大家指教)


#include<stdio.h>
int main()
{
   int a[3][4] = {{1,2,3},{4,5},{8,1}};
   int *p1 = (int *)(&a+1);
   printf("%d\n",*(p1-4));
  
   return 0;
}
  • 写回答

1条回答 默认 最新

  • 地球屋里老师 2022-10-27 23:36
    关注

    &a 取数组首地址
    (&a+1) 取数组末尾元素之后的地址,即首地址向后偏移整个数组后的地址
    p1-4 倒数第四个元素

    同理,下面的结果是一样的
    (&a+2) ,p1-16
    (&a -1) ,p1 +20

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月6日
  • 已采纳回答 10月29日
  • 修改了问题 10月27日
  • 创建了问题 10月27日