指针的理解

·指针数组 


指针数组本质上是数组,是一个存放指针的数组。

Eg:    ①int *arr1[10];   

            ②char *arr2[10];

            ③char **arr3[5];

       ① ② ③ 均为指针数组,   ①是数组(int*类型)中元素是 (int*类型) ;

                                                   ②是数组(char*类型)中元素是(char*类型);

                                                   ③ 数组中存放 二级指针


·数组指针


数组指针本质上是指针,是一个指向数组的指针。 指针变量存放数组地址

Eg:int *pint;   指向整型数据的指针:

        float *pf;   指向浮点型数据的指针;

        int *p[10];       指针数组     数组中存放类型为 int *  类型的指针;

        int (*p)[10];     指针数组    指向整形数组的指针;

注:       int *p[10];    &     int (*p)[10];

              p 先与什么结合,即可表示 p 本质是什么 

              " [ ] "  的优先级于  " * " 的优先级

 


·函数指针


函数指针本质上是指针,是一个指向函数的指针,即指针变量保存的是函数的地址
 Eg:     void test(char* str);
              void (*p)(char*)         //p是一个指针,并且指向一个函数,这个函数参数是char*,返回类型是void型 

     

    哪一个可以存放函数test 的地址?

            void  (*p1)();

            void  *p2();

                   首先,能给储存地址,就要求p1或p2是指针   

                   p1可以存放。p1先和*结合,即p1是指针,指针指向一个函数,指向的函数没有参数,返回值为空


             (*(void(*)())0)();  

             void (*signal(int,void(*)(int)))(int);    简化为:void (*)(int) signal(int,void(*)(int)); 


·函数指针数组


数组是一个存放相同类型数据的存储空间,要把 函数的地址 存到一个数组中,那这个数组就叫函数指针数组。


如何定义:

                 int (*p1[10])();      √       p1先和“  [ ]  ”结合,说明p1是数组,数组内容是 int(*)()类型的函数指针

                 int *p2[10]();         ×

                 int (*)()p3[10];      ×    定义常函数指针数组

用途:转移表

例子:计算器



·指向函数指针数组的指针 


指向函数指针数组的指针,指针指向一个数组,数组的元素都是函数指针


Eg:

            void (*(*a)[10])();                  函数指针数组的指针













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值