二级指针:
1.定义:数组名其实就是一个指针常量,保存数组的首地址,数组名是一个指针常量,不能修改它指向的值,因此可以当做一个指针变量指向数组,这样数组名加下标可以访问数组中的元素,使用指针名加下标也可以访问数组中的元素,数组名就是指针,指针也可以当做数组名来使用。 用二级指针指向一级指针的地址,一级指针指向的是个数组,就可以用二级指针来操作数组。
实例: int a[5]={0,1,2,3,4}; int *p=a; int **pp=&p;
2.实例:
- #include <stdio.h> //头文件
- #include <stdlib.h>
- int main()
- {
- int i,a[10]={1,2,3,4,5,6,7,8,9,10};//声明并初始化
- int *p,**pp;
- printf("使用数组方式输出数组各元素的值:\n");
- for(i=0;i<10;i++) //使用数组方式输出
- {
- printf("%4d ",a[i]);
- }
- printf("\n使用一级指针变量输出数组各元素的值:\n");
- p=a;
- for(i=0;i<10;i++) //使用一级指针变量输出
- {
- printf("%4d ",*p++);
- }
- printf("\n使用二级指针变量输出数组各元素的值:\n");
- p=a;
- pp=&p;
- for(i=0;i<10;i++) //用二级指针变量输出
- {
- printf("%4d ",*(*pp+i)); //pp是个二级指针,它指向一级指针p,p又指向数组的首地址,所以*pp就是p指向的值就是数组的地址,*pp+j就是数组的地址,*(*pp+j)就是数组中的值。
- }
- printf("\n使用二级指针变量**p方式输出数组各元素的值:\n");
- p=a;
- for(i=0;i<10;i++,p++)//使用二级指针变量**p方式输出
- {
- printf("%4d ",**pp); //*pp是p的值数组的地址,**pp就是数组的值
- }
- printf("\n");
- system("pause");
- return 0;
- }
- 结果:
- iuzj@ET302Buildver:~/zhanghong/make/point$ ./a.out
使用数组方式输出数组各元素的值:
1 2 3 4 5 6 7 8 9 10
使用一级指针变量输出数组各元素的值:
1 2 3 4 5 6 7 8 9 10
使用二级指针变量输出数组各元素的值:
1 2 3 4 5 6 7 8 9 10
使用二级指针变量**p方式输出数组各元素的值:
1 2 3 4 5 6 7 8 9 10
sh: 1: pause: not found
liuzj@ET302Buildver:~/zhanghong/make/point$