当前位置:   article > 正文

c语言typedef的用法,C语言中typedef用法总结,看完就能像编程老手一样熟练运用...

typedef在c语言中用法

56a0a9328e3dfaf4f38ccc410c2c0cf8.png请看下文

C语言中typedef关键字应用比较常见,许多C语言初学者对它的用法不甚了解。事实上,我们可以用typedef来定义自己习惯使用的数据类型名称,可以替代自己所熟悉的基本类型、数组类型、指针类型以及自己定义的结构体类型、共用体类型、枚举类型等。一旦我们在程序中定义了自己的数据类型名称,我们就可以像使用int、float和double等基本数据类型一样来使用它。实际使用中,typedef有以下几种主要形式。

1、给基本数据类型定义新名字

基本数据类型的新名字定义通常有两个方面的作用:

1)使数据类型名称简洁

新类型名字定义代码如下所示:

typedef unsigned int UINT;

新类型名UINT定义之后就可以使用它来定义变量,定义代码如下:

UINT a,b,c;

2)代码中的类型与平台无关

由于C语言代码有较强的移植性,通过代码移植,可以使其运行在不同的硬件平台上,使用typedef就可以定义与平台无关的类型。假如用户的程序代码用到了浮点类型,不同平台支持的最高精度不同,这样用户在编程时可以用typedef直接定义一个名为REAL的浮点类型,代码在不同平台运行时仅需修改REAL的定义即可。

如某个平台最高支持long double,那么可以将REAL定义如下:

typedef long double REAL;

如果另一个平台最高仅支持float,那么可以将上述定义修改成如下形式:

typedef float REAL;

2、给数组类型定义新名字

与给基本数据类型定义新名字类似,给数组类型可以定义新名字,定义形式如下:

typedef int ARR_T[50];

这里ARR_T就是一个整型数组类型名,当用户需要定义包含50个元素的整型数组时,可以这样定义:

ARR_T myIntArr;

这里myIntArr就是一个包含了50个元素的数组名。

3、给指针类型定义新名字

对于普通的指针类型,定义类似于上述两种情况,定义代码如下:

typedef int * PINT;

PINT pin1, pin2;

这里PINT是一个指向整型变量的指针类型,利用它定义了两个指向整型变量的指针pin1和pin2。

对于复杂一点的指针类型,就更能体现出typedef的优势。请看下面的声明代码示例:

int * (*s[10])(int *, char *(*)());

对于这个复杂的声明,可以通过typedef定义一个新的简单的别名。过程如下:在原来的声明里逐步用别名替换一部分复杂声明,如此循环,把带变量名(这里为s)的部分留到最后替换,最终得到的就是上述声明的最简化版,具体定义如下:

typedef char *(*pParam)();

typedef int *(*PFUN)(int *, pParam);

PFUN s[10];

4、给自定义数据类型定义新名字

假如用户程序用到了许多自定义数据类型,如结构体类型、共用体类型、枚举类型等。为了使自定义数据类型简洁,可以在其定义的同时时使用typedef给其重新定义一个较为简洁、直观的名字。以结构体为例,定义代码形式如下:

typedef struct tagNODE

{

int data;

struct tagNODE *next;

}NODE, *PNODE;

这里在定义结构体数据类型时,利用typedef定义了两个类型,NODE和PNODE分别为普通变量类型和指向结构的指针类型。

注意,结构体内部一定要用原结构体类型名(struct tagNODE)定义指针next,千万不可以用PNODE或NODE*定义,这是因为此时结构体类型还没有定义完成,不可以使用PNODE和NODE。

定义完之后,就可以使用新类型名定义变量了,简化了定义,使用形式如下:

NODE nd1, nd2, nd3;

PNODE pnd;

nd1, nd2, nd3为普通结构体变量,pnd为指向结构体变量的指针。

关于typedef典型用法今天就总结到这,如果大家有任何疑问请留言探讨。我是“C语言知识传播者”,我会用心总结C语言知识的点点滴滴,你的关注是我持续创作的动力,请关注我,收藏本文、转发并点赞,希望得到你们的持续关注,谢谢!

举报/反馈

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/952153
推荐阅读
  

闽ICP备14008679号