【发布时间】:2019-11-29 01:14:19
【问题描述】:
鉴于以下代码,是否有解决它或任何类似指针问题的技巧(图表、图表或一些更简单的分步说明)?
我的意思是我已经知道答案了,只是我计算的时间太长了。
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);
【问题讨论】:
-
令人困惑的是您将 data[] 设为静态。你忘记了分号。
-
这里有一个技巧:编译代码,通过调试器逐步运行它,并观察所有涉及的变量。比盯着代码用笔和纸做笔记快大约 100 倍。
-
如果你在面试呢哈哈?