一:首先我们必须清楚以下几点概念: 1.指针:指针就是地址。 2.指针变量:指针变量是变量,具有存储空间。就像int,float等类型一样,当然,指针有别的变量不具有的特殊用法。 3.变量指针:是变量的地址。 二: 要知道,指针也是有类型的,指针指向什么类型就是什么类型的指针,例如: 1.指针的类型:我们将type+*叫做指针的类型,type指的是指针所指向的类型,type是指最后一个*之前所有的东西,例如:char* *p,它的type部分就为char*,char *p,它的type部分就是char。 2.char**p,我们可以向将其看作type+*,可以从上面得知,type就是指针指向的类型,而这个指针它的type部分就是char*,所以指针指向的类型就是char*,而指针的类型就是char*指针。 三:区分指针数组与数组指针: 1.指针数组是数组,而数组指针是指针。 2.指针数组就是一个数组里面的元素都是指针。例如int *a[10],数组a中有十个元素,元素类型全都是整形指针。 3.数组指针就是有一个指针指向一个数组。例如int (*a)[10],指针a指向一个数组,数组里面含有10个整形元素。 4.如何区分变量是数组指针还是指针数组:唯一用来辨别的条件就是优先级,因为[]的优先级高于*,如果没加(),那么a先于[]结合,形成数组(如三.2);如果加了,那么a先于*结合,形成指针(如三.3)。 四:指针既然可以指向整形,可以指向数组,那么指针也可以指向函数,而指向函数的指针就叫做函数指针。写法:(void (*p) (); ) 五:理解函数指针数组: 1.理解:函数指针数组,首先我们很容易知道它是数组,再刨析看,这是一个数组里面放的全都是函数指针。 2.例如:int(*p[5])(int x, int y),这就是一个函数指针数组,一个数组里面放的都是函数指针,指针指向的类型是返回类型为int,参数为int x, int y,的函数。 六:理解指向函数指针数组的指针: 1.理解:指向函数指针数组的指针,这肯定是一个指针,指针指向一个数组,数组里面的内容全都是函数指针。 2.例如:int(*(*p)[5])(int x, int y),这就是一个指向函数指针数组的指针,指针p,指向里面有5个函数指针类型元素的数组,函数的返回类型int,参数为int x,int y。