(C)指针的理解

·指针数组
指针数组本质上是数组,是一个存放指针的数组。
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])();                  
      //函数指针数组的指针
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值