sinat_36027429 2017-08-04 14:04 采纳率: 100%
浏览 928
已采纳

学到指针和数组,发现个理解不了的逻辑,虽然好像不影响使用但不知道原理,很是纠结,求大神解脱

int mcai[3][2] = {};
mcai = &mcai[0] = & &mcai[0][0]
**mcai =
*mcai[0] = mcai[0][0]
∵mcai = mcai[0] = &mcai[0][0]
∴mcai=&mcai[0][0]//错_
理解不了的就是为什么mcai和mcai[0]会是同一个地址,一个地址能存两个指针吗?
(就像一个地址存数组那样?
还有就是为什么mcai指向mcai[0]后,明明同样的地址,mcai[0]会指向mcai[0][0]而不是指回mcai;
感觉是同一个问题,实在理解不了求解救

  • 写回答

4条回答 默认 最新

  • das白 2017-08-05 03:11
    关注

    你最上面写的是mcai = &mcai[0] = & &mcai[0][0]

    意思就是 mcai=&&mcai[0][0]
    最下面写的是 mcai=&mcai[0][0] 你是不是推跑偏了 推着推着怎么把原来的结论推翻了
    mcai = mcai[0]?? 不一样的吧
    你**mcai = mcai[0] = mcai[0][0]
    ∵mcai = mcai[0] = &mcai[0][0] 这里感觉好别扭 按照你的推理 **mcai 去掉俩
    为什么等于mcai[0]去掉一个*
    数组的话 你先把一维数组理解好 指针加偏移
    二维数组就是 指针的指针

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?