• 技术文章 >后端开发 >C#.Net教程

    typedef在c语言中是什么意思

    hzchzc2020-07-01 15:46:08原创5037

    typedef为C语言的关键字,作用是为一种数据类型定义一个新名字,这里的数据类型包括内部数据类型【int,char等】和自定义的数据类型【stuct等】。

    typedef是C/C++常用语法,typedef作用,归结起来,可以分为四种:

    1、定义一种类型名

    常规的应用中,想要定义两个字符指针,写下如下代码: char *a, b

    (1)char* a,b;

    (2)char c='m';

    (3)a=&c;

    (4)b=&c;

    上述代码是错误的,只有a为字符指针,b仍旧为字符变量。通过#define进行宏定义,仍然是无效的,因为宏定义仅仅是字符替换。

    以下则可行:

    (1)typedef char* PCHAR;

    (2)PCHAR pa, pb;

    2、跨平台移植

    程序编写中,如果考虑到平台移植的因素,则需要从代码中抽象出硬件层的差异,例如,变量所占空间,端模式等等。

    考虑一个浮点型变量,在不同的硬件平台上,所占据的空间有可能不同,此时,可以采用typedef将其定义到单独的头文件内,该头文件是纯粹抽象硬件相关的内容:

    (1)typedef float REAL;

    (2)typedef short int INT16;

    (3)typedef int INT32

    (4)...

    这样的话,如果将来考虑到程序的移植,只需要修改该头文件即可。

    3、为复杂的声明取别名

    复杂的声明形如:void (*b[10]) (void (*)());

    意思:首先*b[10]为指针数组,它里面的十个元素全是指针。到底是什么指针呢,是一个返回类型为空,形参为空的函数指针。

    这种复杂的声明,可以用typedef进行简化:

    首先:声明后面的函数指针:

    (1)typedef void (pFunParam *)();

    接着声明前面的指针数组:

    (1)typedef void (*pFunx)(pFunParam);

    原声明的最简化版:

    pFunx b[10];

    本文档在撰写过程中,参考了网络博客typedef用法

    里面提到一个复杂的声明:

    (1)doube(*)() (*e)[9];

    而然这个声明在gcc下编译时不通过的,按照作者的本意,似乎应该这样声明:

    (1)double (*(*e)[9])();

    e是一个指向9维数组的指针,数组内为函数指针,该函数指针形参为空,返回类型为double。

    这样的话,应该采用这样的typedef来简化声明:

    typedef (*(*ptr)[9])();

    推荐教程: 《c语言教程

    以上就是typedef在c语言中是什么意思的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:c语言
    上一篇:c语言中\t是什么意思 下一篇:c语言中double是什么意思
    Web大前端开发直播班

    相关文章推荐

    • 在C语言里二维数组在内存中的存放顺序是什么?• c语言中if(x)是什么意思?• c语言中pow函数的用法是什么?• C语言中如何生成1~100的随机数(附代码)
    1/1

    PHP中文网