开发者社区> 问答> 正文

技巧来分析C语言中的指针和指针到指针的结构?

技巧来分析C语言中的指针和指针到指针的结构? 给定以下代码,是否有解决这个问题的技巧(图形,图表或一些更简单的逐步说明)或任何类似的指针问题? 我的意思是我已经知道答案了,只是花了我太多的时间才能计算出来。

static int data[] = {0,1,2,3,4}
int*p[] = {data,data+1,data+2,data+3,data+4};
int**ptr=p;
ptr++;
printf("\n %d %d %d",ptr-p, *ptr-data, **ptr);
*ptr++;
printf("\n %d %d %d",ptr-p, *ptr-data, **ptr);
*++ptr;
printf("\n %d %d %d",ptr-p, *ptr-data, **ptr);
++*ptr;
printf("\n %d %d %d",ptr-p, *ptr-data, **ptr);

展开
收起
kun坤 2019-11-29 10:50:29 494 0
1 条回答
写回答
取消 提交回答
  • 在笔迹丢失的情况下,我最喜欢的技巧是使用笔和纸。 为变量绘制矩形,为指针绘制箭头。 从变量矩形绘制箭头,该矩形是指向它所指向的矩形的指针变量。

    它在ASCII艺术中不像在纸面上那样直观地工作,但是看起来有点像这样。

    data [ 0 ][ 1 ][ 2 ][ 3 ][ 4 ]
           ^    ^    ^    ^   ^^
           |    |    |    |.../|     ("..." meaning chronologically progressing,
           |    |    |    |  / |            though this one is the fourth step)
           |    |    |    | /  |
    p    [ | ][ | ][ | ][ |/][ | ]
    
           ^    ^    ^    ^ 
           |... |... |... |             (here are the first three steps)
          ptr
    

    请注意,ptr永远不会指向p中的索引4,而是将索引3中的指针递增,使其指向数据的索引4。(诚​​然,我并没有真正讲究细节,我将问题集中在技巧上,而不是在代码上完成的结果。我可能误读了故意难以理解的运算符用法...)

    #https://stackoverflow.com/questions/59097696/tricks-to-analyse-pointer-and-pointer-to-pointer-structures-in-c

    2019-11-29 10:51:00
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载