二级指针
1:int * p[5];
[]的优先级高于*.表示数组元素的类型为指针,每个数组元素都指向一个整形变量,p就成了一个二级指针.
2:
#include <stdio.h>
int main()
{
int a[5]={1,3,5,7,9};
int *p[5],i;
int **pp=p;
/*Explain:
p[5]是一个数组,它的每一个元素都指向一个整形变量,把数组a[5]的各个元素的地址给p[5]
使数组p[5]的每一个元素都指向a[5]的一个元素
*/
for(int i=0;i<5;i++)
p[i]=&a[i];
/*Explain:
*p[i]=*(p[i])=* (&a[i]) =a[i]
*/
for(int i=0;i<5;i++)
printf ("%d ",*p[i]);
printf(/n");
/*Explain:
p和pp都是二级指针,即指针的指针,对于**pp,当i=0时,*pp=p[0]=&a[0]
**pp=*(&a[0])=a[0]
*/
for(int i=0;i<5;i++,pp++)
printf ("%d ",**pp);
printf(/n");
}
附二级指针,数组的关系图: