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日

悬赏问题

  • ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
  • ¥15 android 集成sentry上报时报错。
  • ¥50 win10链接MySQL
  • ¥35 跳过我的世界插件ip验证
  • ¥15 抖音看过的视频,缓存在哪个文件
  • ¥15 自定义损失函数报输入参数的数目不足
  • ¥15 如果我想学习C大家有是的的资料吗
  • ¥15 根据文件名称对文件进行排序
  • ¥15 deploylinux的ubuntu系统无法成功安装使用MySQL❓
  • ¥15 有人会用py或者r画这种图吗