技巧来分析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);
在笔迹丢失的情况下,我最喜欢的技巧是使用笔和纸。 为变量绘制矩形,为指针绘制箭头。 从变量矩形绘制箭头,该矩形是指向它所指向的矩形的指针变量。
它在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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。