指针数组,字符指针,函数指针

指针和数组还有函数混搭,极易混淆。
说一说指针数组,字符指针,函数指针还有指向数组的指针。

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