`
蒙面考拉
  • 浏览: 155711 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

typedef的学习

 
阅读更多

typedef顾名思义,为“类型定义”,可以解释为:将一种数据类型定义为某一个标识符,在程序中使用该标识符来实现相应数据类型变量的定义。

 

功能:用自定义名字为已有数据类型命名。

 

类型定义简单形式:typedef type name;

 

 

typedef定义类型步骤

 

1.按定义变量方法先写出定义体,如 int i;

2.将变量名换成新类型名,如 int INTEGER;

3.最前面加typedef 如 typedef int INTEGER;

4.用新类型名定义变量,如 INTEGER i,j;

 

典型用法:

 

 定义结构体类型:

  

typedef struct {int x; int y;} Point;

 

需要说明的是,我们还可以使用下面的方法来定义结构体变量:

 

struct t_Point {

 

    int x; int y;};   // 注意,这里最后一个分号不能省略

 

 

 

int main(int argc, char* argv[])

 

{

 

    struct t_Point a, b;

 

    // . . .

 

    return 0;

 

}

 

显然,这种方法没有typedef更加直观(在C++中,main函数第一行的struct关键字可以省略,但在标准C中,省略该关键字会出现编译错误)。

 

此外,对于定义链接队列中的结点,我们可以这样实现:

 

typedef struct t_node {

 

    int Value;

 

    struct t_node *next;

 

} Node;

 

当然也可以这样定义:

 

typedef strcut t_node Node;

 

struct t_node {

 

    int Value;

 

    Node *next;

 

};

定义数组类型

 

typedef int MyIntArray [100];

 

那么程序中的

 

MyIntArray ia;

 

就相当于

 

int ia[100];

 

定义函数指针

typedef void (*FUNCADDR)(int)

 

此处FUNCADDR是指向这样一个函数的指针,该函数的返回值为void类型,函数有一个int型的参数。

例如:

 

void print (int x)

 

{

 

    printf (“%d\n”, x);

 

}

 

int main (int argc, char *argv[])

 

{

 

    FUNCADDR pFunc;

 

    pFunc = print;    // 将指针指向print函数

 

    (*pFunc)(25);     // 调用函数print

 

    return 0;

 

}

 

函数指针一般用于回调函数、中断处理过程的声明,以及在面向对象程序设计中对事件处理过程的声明。

 

定义类类型

typedef class {

 

    private:

 

       int a;

 

    public:

 

       int b;

 

} MyClass;

 

typedef 与 #define的区别 

    typedef int COUNT

     #define COUNT int

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    关键字 typedef 使用参考

    typedef到处都是,但是能够真正懂得...不管怎样,使用 typedef 能为代码带来意想不到的好处,通过本文你可以学习用 typedef 避免缺欠,从而使代码更健壮。 文档中含有完整代码及注释,并且有typedef的详细用法。

    typedef用法小结

    Typedef 声明有助于创建平台无关类型,甚至能隐藏复杂和难以理解的语法。不管怎样,使用 typedef 能为代码带来意想不到的好处,通过本文你可以学习用 typedef 避免缺欠,从而使代码更健壮。

    STM8-库函学习笔记之GPIO.pdf

    STM8-库函学习笔记之GPIO相关的函数: 1 void GPIO_DeInit(GPIO_TypeDef* GPIOx); 2 void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin, GPIO_Mode_TypeDef GPIO_Mode); 3 void GPIO_Write(GPIO_...

    采用类似GPIO_TypeDef的方式,定义Led_TypeDef结构体类型,用结构体类型设置led参数,用固定占空比闪烁

    采用类似GPIO_TypeDef的方式,定义Led_TypeDef结构体类型,用结构体类型设置led参数,用固定占空比闪烁; 2. 使用说明: 通过修改宏定义可以修改开关时间; 通过查看头文件可以方便移植到不同硬件上; 3. 适合人群...

    C及C++中typedef的简单使用介绍

    又是在学数据结构的时候,发现了之前学习的知识遗忘很多,在发现对C/C++中关键字typedef的理解还是没有到位后,我翻阅了学C++用到的课本,又问了度娘,也看了不少关于typedef用法的博客。于是我就想把我理解的东西...

    typedef的应用

    typedef的应用。 ypedef 声明有助于创建平台无关类型,甚至能隐藏复杂和难以理解的语法。不管怎样,使用 typedef 能为代码带来意想不到的好处,通过本文你可以学习用 typedef 避免缺欠,从而使代码更健壮。

    13.4共用体和typedef.pdf

    13.4共用体和typedef.pdf

    C及C++中typedef的简单使用指南

    又是在学数据结构的时候,发现了之前学习的知识遗忘很多,在发现对C/C++中关键字typedef的理解还是没有到位后,我翻阅了学C++用到的课本,又问了度娘,也看了不少关于typedef用法的博客。于是我想把我理解的东西整理...

    关于C/C++中typedef的定义与用法总结

    typedef与#define有些相似,其实是不同的,特别是在一些复杂的用法上,看了网上一些C/C++的学习者的博客,其中有一篇关于typedef的总结还是很不错,由于总结的很好,我就不加修改的引用过来了,加上自己的一个分析。...

    关于typedef的用法总结

    typedef与#define有些相似,其实是不同的,特别是在一些复杂的用法上,看了网上一些C/C++的学习者的博客,其中有一篇关于typedef的总结还是很不错,由于总结的很好,我不加修改的引用过来了,加上自己的一个分析。...

    json-typedef-codegen:一个从JSON Typedef模式生成代码的CLI工具

    jtd-codegen:从JSON Typedef模式生成代码(又称 )是一种易于学习的标准化方法,用于定义JSON数据的架构。 您可以使用JSON Typedef来跨编程语言轻松地验证数据,创建虚拟数据,生成代码等等。 jtd-codegen是一个CLI...

    PE获取导出表 导入表 资源表 重定位表

    使用VS2012 编写 DLL封装函数PE结构的操作 win32 控制台程序调用并显示 函数原型 typedef PIMAGE_SECTION_HEADER (*GetSectionHead) (PIMAGE_NT_HEADERS NtHead); typedef PIMAGE_IMPORT_...详细代码 新手学习必备!

    谈谈C++学习之Pair的使用方法

    一、Pair类型概述 pair是一种模板类型,其中包含两个数据值,两个数据的类型可以...由于pair类型的使用比较繁琐,因为如果要定义多个形同的pair类型的时候,可以时候typedef简化声明: typedef pair<string, str

    C语言 typedef:给类型起一个别名

    本文主要介绍C语言 typedef,这里整理了相关资料及简单示例代码帮助大家学习理解,有兴趣的小伙伴可以参考下

    单片机模块化编程与设计.docx

    typedef unsigned int UINT; typedef unsigned int uint; typedef unsigned int UINT16; typedef unsigned int WORD; typedef unsigned int word; typedef int int16; typedef int INT16; typedef unsigned long ...

    EDA的电子版教程与教案

    本文为EDA技术的学习教案与教程,方便大家提前学习使用。~~~~~~~~~~~

    C++指针学习的所需资料

    有关于指针学习所需要的资料经碰到过让你迷惑不解、类似于int * (* (*fp1) (int) ) [10];这样的变量声明吗?本文将由易到难,一步一步教会你如何理解这种复杂的 C/C++声明:我们将从每天都能碰到的较简单的声明...

    Stack 栈 C语言实现

    可运行C语言版本参考严蔚敏版本的数据结构与算法书,希望对正在学习的同学或者考研的同学有所帮助,我的代码都是在VC6.0上编写,编译。 #ifndef MAZE_H_ #define MAZE_H_ #include "stack.h" /** * position */ ...

    SP借口 API使用

    介绍sp借口的使用,你可以很容易的学习,还有word文档,你可以做参考

    家庭财政管理系统.cpp

    c语言课设,代码功能完整,适合学习(有注释)。 #include #include #include #include #define MAXNAME 11 // 家庭成员姓名的最大长度 #define MAXDETAIL 21 // 注最大长度 // 自定义枚举类型 fi_type ...

Global site tag (gtag.js) - Google Analytics