是一个数组,数组元素为一个一个的指针。
一般形式:
存储类型 数据类型 *数组名[元素个数];
eg:
int a =10, b =20, c =30;
int*p[3]={&a,&b,&c};
p[0]==&a
*p[0]== a ==10**( p +1)char*p[3]={"hello world","xxxxxxxxxxxx","123456"};
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};int*p[3]={a[0], a[1], a[2]};
练习
1.实现累加求和
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};int*p[3]={a[0], a[1], a[2]};int i,j, sum=0;for(i =0; i <3; i++){for(j =0; j <4; j++){
sum += p[i][j];}}
2.特殊的指针
1.野指针:指向不明确的指针,一用就段错误
int*p;2.空指针:执行零地址(NULL)的指针,一用就段错误
int*p =NULL;
if(p !=NULL){}3.二级指针(多级指针)
指针的指针
int a =10;
int*p =&a;int**q =&p;4.空类型指针(万能指针):能够指向任意类型的地址
注意:使用空类型指针操作空间时,需要强制类型转换为对用指针类型。
void*p;
int a =10;void*p =&a;printf("%d\n",*(int*)p);double pi =3.14;
p =πprintf("%f\n",*(double*)p);