typedef struct和直接struct的区别 typedef

typedef用法详解typedef用法详解如下:
1、为基本数据类型定义新的类型名 。
2、为自定义数据类型(结构体、共用体和枚举类型)定义简洁的类型名称 。
3、为数组定义简洁的类型名称 。
4、为指针定义箭洁的名称 。
typedef
是在C和C++编程语言中一个关键字 。它用来对一个资料类型起一个新名字 。目的是为了使源代码更易于阅读和理解 。在计算机编程语言中用来为复杂的声明定义简单的别名,与宏定义有些差异 。
它本身是一种存储类的关键字,与auto、extem、mutable、static、register等关键字不能出现在同一个表达式中 。typedef声明,简称typedef,为现有类型创建一个新的名字,或称为类型别名,在结构体定义,还有一些数组等地方都大量的用到 。
它有助于创建平台无关类型,甚至能隐藏复杂和难以理解的语法 。使用typede何编写出更加美观和可读的代码 。所谓美观,意指typeder能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性以及未来的可维护性 。
在C语言中typedef是什么意思?干什么用的?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、用于struct结构体
(1)#include stdio.h
(2)struct tagPOINT1
(3) {
(4)int x;
(5)int y;
(6)};
(7)int main()
(8){
(9)tagPOINT1 p1,p2;//此句编译无法通过
(10)//错误信息:error: unknown type name 'tagPOINT1'
(11) //环境:Gcc 4.8.1
(12)}
必须采用如下定义;
(1)struct tagPOINT1 p1,p2;//必须有关键字 struct
(2)采用typedef,则可以省掉结构体定义时的struct
(3)ypedef struct tagPOINT
(4){
【typedef struct和直接struct的区别 typedef】(5)int x;
(6)int y;
(7)}POINT;
(8)POINT p1; // 这样就比原来的方式少写了一个struct 。
3、跨平台移植
程序编写中,如果考虑到平台移植的因素,则需要从代码中抽象出硬件层的差异,例如,变量所占空间,端模式等等 。
考虑一个浮点型变量,在不同的硬件平台上,所占据的空间有可能不同,此时,可以采用typedef将其定义到单独的头文件内,该头文件是纯粹抽象硬件相关的内容:
(1)typedef float REAL;
(2)typedef short int INT16;
(3)typedef int INT32
(4)...
这样的话,如果将来考虑到程序的移植,只需要修改该头文件即可 。
4、为复杂的声明取别名
复杂的声明形如: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])();
扩展资料
typedef为C语言的关键字,作用是为一种数据类型定义一个新名字 。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等) 。
在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明 。
参考资料来源:百度百科-typedef
C语言中的typedef是什么意思啊typedef为C语言的关键字,作用是为一种数据类型定义一个新名字 。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等) 。
在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明 。

秒懂生活扩展阅读