小白对指针的理解(3)

     

             
          一维数组传参时传的是首元素地址
           那二维数组传参时传的也是首元素地址,但二维数组的本质是“一维数组的数组”
             所以它传参时传的是二维数组第一行数组的地址
             形参可以写成数组也可以写成指针,写成数组更好理解

            

一·函数指针变量

   函数指针变量
             1.&add与add是没有区别的 (都是函数的地址)如图
             2.函数指针变量类比数组指针,int(*p)[n]  int(*p)(int,int)=&add;
             (变量去掉名字就是它的类型:如 int(*p1)[n]去掉名字就是int(*)[n],这就是p1的类型
             同理 int( * p2)(int,int)去掉名字就是int(*)(int,int),这就是p2的类型)
             接下来看两个经典例题
            如图:
            第一个:(    * (  void (*) ( )  )0   )  ();
        这段代码的作用:调用0地址处的那个函数
        ( void (*) () )这部分是对0的强制类型转换
            内部的 void (*) ()是返回类型为void没有参数的函数指针
            第二个:void(  *  signal(  int, void(*)(int)   )   )     (int) ;
        这段代码:这个函数的返回类型是一个函数指针,该函数指针指向的函数参数是int类型,返回类型是void
            内部这部分:signal(  int, void(*)(int)  )是一个函数,
            这个函数有两个参数,一个是int,一个是是返回类型为void没有参数的函数指针
 二·typedef
            typedef 关键字
            typedef 是用来类型重命名的,可以将复杂的类型,简单化。​
            如图
            利用 typedef 还能更好的理解上面的第二段代码
            如图
 三·函数指针数组
            类比其他数组
            1."整型数组" int arr[]
            2."字符数组" char brr[]//前面的类型就是数组元素的类型
            3."指针数组" int(*)[]
            那"函数指针数组"前面的类型就要写成函数指针类型
            (这里以参数为int型返回类型为int型的函数为例)
            所以应该写成   int(*p[n])(int, int)

 四·函数指针数组的用途
            转移表(简型计算器)
            如图

接下来使用函数指针数组来实现。


 

  • 24
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值