赞
踩
如何使⽤⼆级指针操作⼀维数组?
下⾯看⼀下指向指针变量的指针变量在程序中是如何应⽤的。 利⽤指向指针的指针输出⼀维数组。代码如下。
- #include <stdio.h>
- int main()
- {
- int a[10], *p1, **p2, i;
- printf("Please input:\n");
- for (i = 0; i < 10; i++)
- {
- scanf("%d", &a[i]);
- }
- p1 = a;
- p2 = &p1;
- printf("The arrray is:");
- for (i = 0; i < 10; i++)
- {
- if (i % 5 == 0)
- {
- printf("\n");
- }
- printf("%5d\n", *(*p2 + i));
- }
- return 0;
- }
程序运⾏结果如下所示
- Please input:
- 1 2 3 4 5 6 7 8 9 0
- The arrray is:
- 1 2 3 4 5
-
- 6 7 8 9 0
该程序中,将数组 a 的⾸地址赋给指针变量 p1,又将指针变量 p1 的地址赋给 p2 ,要通过这个双重指针变量 p2 访问数组中的元素,就要⼀层层地来分析。⾸先看 *p2 的含义, *p2 指向的是指针变量 p1 所存放的内容及数组 a 的⾸地址,要想取出数组 a 中的元素,就必须在 *p2 前⾯再加⼀个指针运算符“ * ”。上⾯描述的过程如下所示。
根据指针的⽤法,还可将程序改写成如下形式
- #include <stdio.h>
- int main()
- {
- int a[10], *p1, **p2;
- printf("Please input:\n");
- for (p1 = a; p1 - a < 10; p1++)
- {
- p2 = &p1;
- scanf("%d", *p2);
- }
- p1 = a;
- p2 = &p1;
- printf("The arrray is:");
- for (p1 = a; p1 - a < 10; p1++)
- {
- if ((p1 - a) % 5 == 0)
- {
- printf("\n");
- }
- p2 = &p1;
- printf("%5d\n", **p2);
- }
- return 0;
- }
指向指针的指针不仅仅是对象狭义上的指针,同样可以指向数组指针。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。