定义:
int *p[5];
定义了一个指针数组,每一个元素均为一个指向整型值的指针。如果没有进行初始化,则每个元素均为无效指针。
可以在定义的时候对指针进行初始化,也可以通过以下循环的方式进行一一配对。
int a[10],i,*p[10];
for(i=0;i<10;i++)
p[i] = &a[i];
例:
不改变数组中各个元素的顺序,按照从小到大的次序来输出数组值。
#include<stdio.h>
#define n 10
int main()
{
int a[n],*p[n],i,j,*pt = a;
for(i=0;i<n-1;i++)
{
scanf("%d",pt);
p[i] = pt++;
}
for(i=0;i<n;i++)
for(j=0;j<n-i-1;j++)
if(*p[j]>*p[j+1])
pt = p[j],p[j] = p[j+1],p[j+1] = pt;
for(i=0;i<n;i++)
printf("%d\t",*p[i]);
return 0;
}
二级指针与多级指针
二级指针举例
我们对一个变量i = 4,可以直接通过i来访问这个变量,也可以通过指针*pi = 4,也可以通过二级指针**pi来访问
int i=4;
int *pi = &i;
int **ppi = π
上面这三种定义都可以访问到i这个变量。
二级数组用于操作指针数组十分方便。