jiangying2017 2017-12-04 13:15 采纳率: 100%
浏览 558
已采纳

新人小白帖,急求解。。。。!

int a[4][3] = { 1,2,3,4,5,6,7,8.9,10,11,12 };
int(*pt)[3] = a;
cout << (*(pt + 1)[2]) << endl;
return 0;

本人是小白,刚刚开通博客,所以没办法给大家悬赏c币,请大家见谅,想问一下这个结果为什么是11.

  • 写回答

4条回答 默认 最新

  • 战在春秋 2017-12-04 22:42
    关注

    很有欺骗性的题目,应该是8,9
    不是8.9 标点符号错误了。

    修改后正确的答案应该是10

    1 2 3 //第0行
    4 5 6
    7 8 9
    10 11 12 //第3行

    首先pt 是行指针 ( 之前有个您问的问题,可以结合理解)
    解释一下(pt + 1)[2], pt+1指向第一行,[]运算符优先级大于* , (pt + 1)[2] = (pt+0)[3] = pt[3],即指向第三行行首。

    这种写法对初学者不友好,不提倡。
    然后 *(pt + 1)[2] 等同于 * ( pt[3] + 0 ) ,即取第三行第0列的元素,答案是10

    一种好理解的写法如下:

    int main()
    {
        int a[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 }, (*p)[4], i, j;
        p = a;
        for (i = 0; i < 3; i++)
            for (j = 0; j < 4; j++)
                printf("%d ", *(*(p + i) + j));
        return 0;
    }
    

    如果对您有帮助,请点击采纳答案好吗,谢谢~~

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

报告相同问题?

悬赏问题

  • ¥15 CATIA有些零件打开直接单机确定终止
  • ¥15 请问有会的吗,用MATLAB做
  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 ARIMA模型时间序列预测用pathon解决
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序,怎么查看客户esp32板子上程序及烧录地址