Arromine 2021-09-13 20:13 采纳率: 71.4%
浏览 49

用指针输出数组的值为什么出现错误

为什么语句输出语句(p+2)+3)错误而*(p+2)+3正确,再问值为什么是6而不是12,不是说a[i][j]=*(*(p+i)+j)嘛?

img

  • 写回答

2条回答 默认 最新

  • 嵌入式小学徒 2021-09-13 22:07
    关注

    建立先把一级指针和二级指针的概念搞清楚还有数组在内存上的分布

    
    ```c
    int *p = a[0]; /* a[0]相当于a[0][0]的地址,p是一级指针 */
    
    *(p + 2) /* p为int类型的指针,偏移两个单位 即a[0][0]向后偏移两个单位为a[0][2] = 3 */
    
    *(p + 2) + 3 /* 3+3=6 */
    
    *( *(p + 2) + 3 )  /* 知道为什么错了吧hh */
    
    

    ```

    评论

报告相同问题?

问题事件

  • 创建了问题 9月13日

悬赏问题

  • ¥15 请问为什么我配置IPsec后PC1 ping不通 PC2,抓包出来数据包也并没有被加密
  • ¥200 求博主教我搞定neo4j简易问答系统,有偿
  • ¥15 nginx的使用与作用
  • ¥100 关于#VijeoCitect#的问题,如何解决?(标签-ar|关键词-数据类型)
  • ¥15 一个矿井排水监控系统的plc梯形图,求各程序段都是什么意思
  • ¥15 ensp路由器启动不了一直报#
  • ¥50 安卓10如何在没有root权限的情况下设置开机自动启动指定app?
  • ¥15 ats2837 spi2从机的代码
  • ¥200 wsl2 vllm qwen1.5部署问题
  • ¥100 有偿求数字经济对经贸的影响机制的一个数学模型,弄不出来已经快要碎掉了