- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
typedef语句与预编译
typedef语句 typedef语句 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。 typedef的最简单使用 语法形式 typedef 已有类型名 新类型名表; 例如 typedef long byte_4; 给已知数据类型long起个新名字,叫byte_4。 Byte_4 i1,i2; 等价于 long i1,i2; typedef与结构结合使用 typedef struct tagMyStruct{ int iNum; long lLength;} MyStruct; 这语句实际上完成两个操作: 1) 定义一个新的结构类型 struct tagMyStruct{ int iNum; long lLength; }; 不论是否有typedef,这个结构都存在。 2) typedef为这个新的结构起了一个名字,叫MyStruct。 typedef struct tagMyStruct MyStruct; 因此,MyStruct实际上相当于struct tagMyStruct,我们可以使用 MyStruct varName来定义变量。 应用举例 typedef struct tagNode{ char *pItem; pNode pNext; //错误,pNode没定义 } *pNode; pNode是指向struct tagNode类型的指针类型。 pNode p; struct tagNode s; P=s; 修改: 一、 typedef struct tagNode { char *pItem; struct tagNode *pNext;} *pNode; 二、 typedef struct tagNode *pNode;struct tagNode { char *pItem; pNode pNext;}; 注意:在这个例子中,你用typedef给一个还未完全声明的类型起新名字。C语言编译器支持这种做法。 代码简化 为复杂的声明定义一个新的简单的别名 PF?Register(PF?pf); 理解复杂声明可用的“右左法则”: 从变量名看起,先往右,再往左,碰到一个圆括号就调转阅读的方向;括号内分析完就跳出括号,还是按先右后左的顺序,如此循环,直到整个声明分析完。举例:int (*func)(int *p);首先找到变量名func,外面有一对圆括号,而且左边是一个*号,这说明func是一个指针;然后跳出这个圆括号,先看右边,又遇到圆括号,这说明(*func)是一个函数,所以func是一个指向这类函数的指针,即函数指针,这类函数具有int*类型的形参,返回值类型是int。 int (*func[5])(int *);func右边是一个[]运算符,说明func是具有5个元素的数组;func的左边有一个*,说明func的元素是指针(注意这里的*不是修饰func,而是修饰func[5]的,原因是[]运算符优先级比*高,func先跟[]结合)。跳出这个括号,看右边,又遇到圆括号,说明func数组的元素是函数类型的指针,它指向的函数具有int*类型的形参,返回值类型为int。 预处理指令 1.预处理器 改善程序的组织和管理 2.预处理指令 所有编译指令以 # 开头,每条指令单独占一行 宏定义指令 条件编译的应用 一、 例如,我们有一个数据类型,在Windows平台中,应该使用long类型表示,而在其他平台应该使用float表示,这样往往需要对源程序作必要的修改,这就降低了程序的通用性。可以用以下的条件编译: #ifdef WINDOWS #define MYTYPE long #else #define MYTYPE float #endif 如果在Windows上编译程序,则可以在程序的开始加上 #define WINDOWS 如果在这组条件编译命令之前曾出现以下命令行: #define WINDOWS 0 例如:输入一行字母字符,根据需要设置条件编译,使之能将字母全改为大写输出,或全改为小写字母输出。 #define LETTER 1 main() { char str[20]=C Language,c; int i=0; while((c=str[i])!=\0){ i++; #if LETTER if(c=ac=z) c=c-32; #else if(c=Ac=Z) c=c+
文档评论(0)