zoukankan      html  css  js  c++  java
  • IOS typedef 函数指针的用法

    代码简化, 促进跨平台开发的目的.

     typedef 行为有点像 #define 宏,用其实际类型替代同义字。

     不同点:typedef 在编译时被解释,因此让编译器来应付超越预处理器能力的文本替换

    用法一:

    typedef int (*MYFUN)(int, int)
    这种用法一般用在给函数定义别名的时候
    上面的例子定义MYFUN 是一个函数指针, 函数类型是带两个int 参数, 返回一个int 

    分析这种形式的定义的时候可以用下面的方法: 
    先去掉typedef 和别名剩下的就是原变量的类型. 
    去掉typedef和MYFUN以后就剩:
     
    int (*)(int, int)

    用法二:

    typedef给变量类型定义一个别名.

    typedef struct{ 
    int a; 
    int b; 
    }MY_TYPE

    这里把一个未命名结构直接取了一个叫MY_TYPE的别名, 这样如果你想定义结构的实例的时候就可以这样: 
    MY_TYPE tmp;

    第二种用法:typedef 原变量类型 别名

    简单的函数指针的用法

    //形式1:返回类型(*函数名)(参数表)

    char(*pFun)(int);

    //typedef char(*pFun)(int)   //跟上一行功能等同

    /*typedef的功能是定义新的类型。第一句就是定义了一种PTRFUN的类型,并定义这种类型为指向某种函数的指针,这种函数以一个int为参数并返回char类型。*/

    char glFun(int a){return;}

    void main()

    {

    pFun =glFun;

    (*pFun)(2);

    }

    第一行定义了一个指针变量pFun.它是一个指向某种函数的指针,这种函数参数是一个int类型,返回值是char类型。只有第一句我们还无法使用这个指针,因为我们还未对它进行赋值

    第二行定义了一个函数glFun().该函数正好是一个以int为参数返回char的函数。我们要从指针的层次上理解函数-函数的函数名实际上就是一个指针函数名指向该函数的代码在内存中的首地址

    enum和enum typedef 在IOS中的使用

    第一、typedef的使用

    C语言里typedef的解释是用来声明新的类型名来代替已有的类型名,typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)

    如:typedef  char gender;

    gender a;与char a;语句相同。

    第二 、enum的使用

    enum是枚举类型, enum用来定义一系列宏定义常量区别用,相当于一系列的#define xx xx,当然它后面的标识符也可当作一个类型标识符。

    如:

    enum AlertTableSections

    {

    kUIAction_Simple_Section = 1,

    kUIAction_OKCancel_Section,

    kUIAction_Custom_Section,

    kUIAlert_Simple_Section,

    kUIAlert_OKCancel_Section,

    kUIAlert_Custom_Section,

    }; 

     

    kUIAction_OKCancel_Section的值为2.

    第三、typedef enum 的使用

    typedef  enum则是用来定义一个数据类型,那么该类型的变量值只能在enum定义的范围内取。

     

    typedef enum {

        UIButtonTypeCustom = 0,           // no button type

        UIButtonTypeRoundedRect,          // rounded rect, flat white button, like in address card

     

        UIButtonTypeDetailDisclosure,

        UIButtonTypeInfoLight,

        UIButtonTypeInfoDark,

        UIButtonTypeContactAdd,

    } UIButtonType;

  • 相关阅读:
    网络流量监控工具iftop
    CentOS6.X安装vsftpd服务
    CentOS 6.x版本升级Mysql
    CentOS 5.x版本升级Mysql
    CentOS 5.x版本升级PHP
    CentOS 6.X版本升级PHP
    Spring bean configuration inheritance
    cannot load such file -- openssl
    第八章、Linux 磁盘与文件系统管理
    Laravel Configuration
  • 原文地址:https://www.cnblogs.com/wcLT/p/4750846.html
Copyright © 2011-2022 走看看