typedef用法和陷阱】的更多相关文章

一.typedef的用法 1.用typedef来声明新的类型名,来代替已有的类型名,也就是给类型起别名.比如 typedef float REAL; //用REAL来代表float类型 REAL a; //定义一个REAL类型的变量,等价于float a,即定义一个float类型的变量a 这种用法经常用来作为定义与平台无关的类型,方便代码的跨平台移植. 例如,定义REAL类型为目标平台精度最高的类型. 1>在支持long double的平台上定义为: typedef long double RE…
typedef用来声明一个别名,typedef后面的语法,是一个声明.本来笔者以为这里不会产生什么误解的,但结果却出乎意料,产生误解的人不在少数.罪魁祸首又是那些害人的教材.在这些教材中介绍typedef的时候通常会写出如下形式: typedef int PARA; 这种形式跟#define int PARA几乎一样,如前面几章所述,这些教材的宗旨是由浅入深,但实际做出来的行为却是以偏盖全.的确,这种形式在所有形式中是最简单的,但却没有对 typedef进一步解释,使得不少人用#define的思…
typedef是一个我们常常会用到的关键字,而这个关键字有许多陷阱或者说许多不为我们深入理解的地方.很多书上都是很简单地一笔代过,并没有真正地让我们理解这个关键字.本文对其进行详细地说明.综合网络上找到的资料对其进行分析,这其中会涉及到一些其他c方面的内容(比如指针,指向函数的指针,编译时候数据类型未定义与完全定义知识等等),看到这些内容的时候大家可以忽略,这个重点是在typedef.好了,不说那么多开始吧. <h4>typedef的定义</h4> typedef 是一个关键字,后…
1.typedef (1)typedef的使用 定义一种类型的别名,而不只是简单的宏替换(见陷阱一).用作同时声明指针型的多个对象 typedef char* PCHAR; // 一般用大写,为char*起个别名PCHAR PCHAR pa, pb; // 可同时声明了两个指向字符变量的指针,若是char* a,b则不行,只是声明了一个指针a,一个字符b typedef struct node NODE;//struct node = NODE,eg:struct node n; <==> N…
小结: 1. typedef并没有创建一个新类型,它只是为某个已存在的类型增加了一个新的名称而已: 2. typedef声明也没有证据新的语义:通过这种方式声明的变量与通过普通方式声明的变量具有完全相同的属性: 3. 类似于#define,但typedef是由编译器解释的,因此它的文本替换供功能要超过预处理器的功能: 4. typedef可以使程序参数化,提高程序的可移植性.如果typedef声明的数据类型同机器有关,那么,当程序移植到其他机器上时,只需该表typedef类型定义就可以了. 一个…
原文链接 C语言允许用户使用 typedef 关键字来定义自己习惯的数据类型名称,来替代系统默认的基本类型名称.数组类型名称.指针类型名称与用户自定义的结构型名称.共用型名称.枚举型名称等.一旦用户在程序中定义了自己的数据类型名称,就可以在该程序中用自己的数据类型名称来定义变量的类型.数组的类型.指针变量的类型与函数的类型等. 例如,C 语言在 C99 之前并未提供布尔类型,但我们可以使用 typedef 关键字来定义一个简单的布尔类型,如下面的代码所示: typedef int BOOL; #…
C++中有关 const & 内敛 & 友元&静态成员 的用法比较杂乱,算是C++中一个麻烦的部分.现速速的对它们做大致的总结,了解它们当中常见的用法和陷阱. const修饰的成员函数&对象 在成员函数后面加const,const修饰this指针所指向的对象,也就是保证调用这个const成员函数的对象在函数内不会改变 /************************************************************************* >…
12.优先使用前置操作符 #include <iostream> using namespace std; class A { private: int num; public: A operator++(); //前置++ A operator++(int); //后置++ }: A A::operator++() { (*this).num=(*this).num+1; //无须构造一个临时对象 return (*this); } A A::operator++(int) { A p1;…
自 http://niehan.blog.techweb.com.cn/archives/325.html typedef用来声明一个别名,typedef后面的语法,是一个声明.本来笔者以为这里不会产生什么误解的,但结果却出乎意料,产生误解的人不在少数.罪魁祸首又是那些害人的教材.在这些教材中介绍typedef的时候通常会写出如下形式: typedef int PARA; 这种形式跟#define int PARA几乎一样,如前面几章所述,这些教材的宗旨是由浅入深,但实际做出来的行为却是以偏盖全…
1 首先://注意在C和C++里不同 1.1 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明) 这里的Stu实际上就是struct Student的别名.Stu==struct Student 另外这里也可以不写Student(于是也不能struct Student stu1;了,必须是Stu stu…