typedef

作者: yxuang | 来源:发表于2017-02-07 10:34 被阅读0次

typedef常见用法

1.常规变量类型定义

例如:typedef unsigned char uchar

描述:uchar等价于unsigned char类型定义 uchar c声明等于unsigned char c声明

2.数组类型定义

例如: typedef int array[2];

描述: array等价于 int [2]定义; array a声明等价于int a[2]声明

扩展: typedef int array[M][N];

描述: array等价于 int [M][N]定义; array a声明等价于int a[M][N]声明

3.指针类型定义

例如:  typedef int *pointer;

描述: pointer等价于 int *定义;pointer p声明等价于int *a声明

例如:  typedef int *pointer[M];

描述: pointer等价于 int *[M]定义  pointer p声明等价于int *a[M]声明明

4.函数地址说明

描述:C把函数名字当做函数的首地址来对待,我们可以使用最简单的方法得到函数地址

例如: 函数:int func(void); unsigned long funcAddr=(unsigned long)func, funcAddr的值是func函数的首地址

5.函数声明

例如: typedef int func(void);  func等价于 int (void)类型函数

描述1: func f声明等价于 int f(void)声明,用于文件的函数声明

描述2: func *pf声明等价于 int (*pf)(void)声明,用于函数指针的生命,见下一条

6.函数指针

例如: typedef int (*func)(void)

描述: func等价于int (*)(void)类型

func pf等价于int (*pf)(void)声明,pf是一个函数指针变量

7.识别typedef的方法:

a).第一步。使用已知的类型定义替代typdef后面的名称,直到只剩下一个名字不识别为正确

如typedef u32  (*func)(u8);

从上面的定义中找到 typedef __u32  u32;typedef __u8 u8

继续找到 typedef unsigned int __u32;typedef unsigned char __u8;

替代位置名称 typedef unsigned int  (*func)(void);

现在只有func属于未知。

b).第二步.未知名字为定义类型,类型为取出名称和typedef的所有部分,如上为

func等价于unsigned unsigned  int  (*)(unsigned  char);

c).第三部.定义一个变量时,变量类型等价于把变量替代未知名字的位置所得到的类型

func f等价于unsigned unsigned int  (*f)(unsigned char)

int *(*x[10]) (void)

始终从内往外读声明符。换句话说,定位声明的标识符,并且从此处开始解释声明。

在作选择时,始终使[ ]和()优先于*。如果*在标识符的前面,而标识符后边跟着[ ],那么标识符表示数组而不是指针。同样地,如果*在标识符的前面,而标识符后边跟着(),那么标识符表示函数而不是指针。(当然可以使用圆括号来使[ ]和()相对于*的优先级无效。)

首先,定位声明的标识符(x)。在x前面有*,而后边又跟着[ ]。因为[ ]优先级高于*,所以取右侧(x是数组)。接下来,从左侧找到数组中元素的类型(指针)。再接下来,到右侧找到指针所指向的数据类型(不带实际参数的函数)。最后,回到左侧看每个函数返回的内容(指向int型的指针)。

typedef int *Fcn (void);

typedef Fcn *Fcn_ptr;

typedef Fcn_ptr Fcn_ptr_array[10];

相关文章

  • typedef和#define 的区别?

    typedef和#define 的区别? 1.typedef typedef int * pint ;typede...

  • typedef char * * HuffmanCode解读

    typedef 是重定义typedef char * * HuffmanCode

  • 合并两个单链表

    #include #include typedef int ElementType; typedef struct...

  • NS_ENUM&NS_OPTION

    先复习几个概念 typedef定义类型别名 语法:typedef类型别名 例子:typedef double RE...

  • 单链表

    LinkList.h typedef void LinkList;typedef void LinkListNod...

  • 单向循环链表

    # 单项循环列表 ``` typedef int ElemType; typedef int Status; //...

  • typedef和typename

    一、typedef 用法:typedef 内置类型 别名 关键字typedef对内置类型、类类型等进行重命名,使用...

  • typedef

    别名 typedef 声明,简称 typedef,为现有类型创建一个新的名字,或称为类型别名,在结构体定义,还有一...

  • typedef

    0. 理解 作用:给一个 已知数据类型 起别名 1. 基本数据类型 2. 指针 3. 结构体 4. 枚举

  • typedef

    用法一:可以减少代码的书写量 struct student{ int data; char name[10]; }...

网友评论

      本文标题:typedef

      本文链接:https://www.haomeiwen.com/subject/xcppittx.html