当前位置:   article > 正文

C语言二级指针如何应⽤于⼀维数组?

C语言二级指针如何应⽤于⼀维数组?

一、问题

        如何使⽤⼆级指针操作⼀维数组?

二、解答

        下⾯看⼀下指向指针变量的指针变量在程序中是如何应⽤的。 利⽤指向指针的指针输出⼀维数组。代码如下。

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int a[10], *p1, **p2, i;
  5. printf("Please input:\n");
  6. for (i = 0; i < 10; i++)
  7. {
  8. scanf("%d", &a[i]);
  9. }
  10. p1 = a;
  11. p2 = &p1;
  12. printf("The arrray is:");
  13. for (i = 0; i < 10; i++)
  14. {
  15. if (i % 5 == 0)
  16. {
  17. printf("\n");
  18. }
  19. printf("%5d\n", *(*p2 + i));
  20. }
  21. return 0;
  22. }

        程序运⾏结果如下所示

  1. Please input:
  2. 1 2 3 4 5 6 7 8 9 0
  3. The arrray is:
  4. 1 2 3 4 5
  5. 6 7 8 9 0

        该程序中,将数组 a 的⾸地址赋给指针变量 p1,又将指针变量 p1 的地址赋给 p2 ,要通过这个双重指针变量 p2 访问数组中的元素,就要⼀层层地来分析。⾸先看 *p2 的含义, *p2 指向的是指针变量 p1 所存放的内容及数组 a 的⾸地址,要想取出数组 a 中的元素,就必须在 *p2 前⾯再加⼀个指针运算符“ * ”。上⾯描述的过程如下所示。

        根据指针的⽤法,还可将程序改写成如下形式

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int a[10], *p1, **p2;
  5. printf("Please input:\n");
  6. for (p1 = a; p1 - a < 10; p1++)
  7. {
  8. p2 = &p1;
  9. scanf("%d", *p2);
  10. }
  11. p1 = a;
  12. p2 = &p1;
  13. printf("The arrray is:");
  14. for (p1 = a; p1 - a < 10; p1++)
  15. {
  16. if ((p1 - a) % 5 == 0)
  17. {
  18. printf("\n");
  19. }
  20. p2 = &p1;
  21. printf("%5d\n", **p2);
  22. }
  23. return 0;
  24. }

三、总结

        指向指针的指针不仅仅是对象狭义上的指针,同样可以指向数组指针。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/528513
推荐阅读
相关标签
  

闽ICP备14008679号