指针数组,字符指针,函数指针
指针和数组还有函数混搭,极易混淆。
说一说指针数组,字符指针,函数指针还有指向数组的指针。
- 指针数组,char *string[10];这里按照优先级顺序,string[10]是一个整体,说明它是一个数组。如果是char string[10],那么大家都知道这是一个数组,数组里的元素都是char类型的。同理char *string[10],那么把char 看作一个整体,那么意思就是string[10]是一个数组,数组里的元素是char的,对于一个元素那么它显然是指向char类型的指针,这就是指针数组。
- 指向数组的指针,char (string)[10],按照优先级顺序它首先是string,说明它是一个指针。如果把string换成m,那么char m[10]大家都知道m是数组名,那么被string代替后*string相当于是数组名了,有因为数组名本身就是一个地址,那么用指针代替后string就是一个指向数组的指针了。比如
char m[10]={"123456789"}
char (*string)[10];
string = m;
这样string就指向m数组了,如果还有同类型的数组,那么在传递函数时使用是非常方便的。 - 字符指针,顾名思义,就是指向字符的指针,例如char *string;这个很好理解。
- 函数指针,指向函数的指针,其中指针中存储着函数代码的起始处的地址。
void (*string)(int);
如果是void pr(int),我们知道pr是函数名,int是函数的形参,void是无返回类型,我们将pr转换成*string,将指针指向函数名,那么这就是函数指针了,举个例子
void (*string)(int);
void pr(int);
string=pr;
这就意味着我可以使用string指针来更改我的函数了。
综上来说,上面四种可以进行组合,如果弄在一起,一定要注意优先级,可以把指针部分用平常的变量进行代替,就比较好的可以区分了。

浙公网安备 33010602011771号