总结:
一:指针数组:本质是一个数组
如int *a[5]
表示:数组a中每个元素都是int*类型的指针变量,即保存了5个地址。
二:一维数组指针:类型标识符(*指针类型名)[二维数组的列数]
如:int a[5][5];//定义了一个5*5的二维数组
int (*p)[5];//定义了一个指向二维数组行的指针变量
p=a;//给变量赋值
注意: 1. 类型标识符(*指针类型名)[二维数组的列数] 2. 对数组指针加*,并不是取值的意思,而是改变了它的类型。
如对本例中的p加*, 即*p,是将p从int(*)[5]变成了 int *类型 ,他们指向的地方不变
三:字符指针
如:char str[ ]="hi boy";
char *p=str;
注意:c语言允许对字符指针变量赋值,如:char *p="hi boy"; 相当于将字符串的首地址赋值给p 但不可以,在指针p还未有明确的指向时进行类似于scanf("%s",*p);,因为此时的p是一个野指针。
四:函数指针:返回值类型(*指针类型名)(形参列表)
如:int (*p)(int ,int ) ;
int a(int i,int j)//a为函数的入口地址
{
}
p=a;