面试题:三级指针问题

当我第一眼看到这道题,内心是崩溃的,怎么会有这么复杂的题目,但是细心研究,自有门道。

做这道题,首先应对指针数组,二级指针,三级指针有一定的了解,我的一篇文章《总结C语言指针部分的知识》里有提到。

首先,来看看结果:

面试题:三级指针问题

以下是我的思路:此题可画图来分析:

面试题:三级指针问题

这个题的指向关系就是这样,通过画图解决,很明确:

1.printf("%s\n", **++cpp); 

cpp指向cp的首地址,++cpp则指向cp的第二个的地址,然后解引用,可以访问到“POINT”的首地址,所以输出:POINT

面试题:三级指针问题


2.printf("%s\n", *--*++cpp+3);

cpp继续前置++,那么cpp此时指向cp的第三个的地址,解引用,指向“”NEW“的首地址,”在自减解引用,得到“”ENTER“”的首地址,再+3,则指向E,所以输出ER

面试题:三级指针问题

第三个和第四个,相同的思路:

3.printf("%s\n", *cpp[-2]+3);

面试题:三级指针问题

4.printf("%s\n", cpp[-1][-1]+1);面试题:三级指针问题




相关文章:

  • 2022-12-23
  • 2021-08-14
  • 2021-04-26
  • 2021-10-26
  • 2022-12-23
  • 2021-10-27
  • 2021-12-01
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-04-16
  • 2021-10-18
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-12
相关资源
相似解决方案