第十三章编译预处理和动态存储分配.doc

第十三章编译预处理和动态存储分配.doc

ID:59257864

大小:23.00 KB

页数:11页

时间:2020-09-08

第十三章编译预处理和动态存储分配.doc_第1页
第十三章编译预处理和动态存储分配.doc_第2页
第十三章编译预处理和动态存储分配.doc_第3页
第十三章编译预处理和动态存储分配.doc_第4页
第十三章编译预处理和动态存储分配.doc_第5页
资源描述:

《第十三章编译预处理和动态存储分配.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第十三章编译预处理和动态存储分配1.编译预处理在C语言中,凡是以#开头的行都称为编译预处理命令行,命令行的语法与C语言中其它部分无关,根据需要命令行可出现在程序中的任何一个位置,其作用域一直到源文件的末尾。编译预处理就是在C编译程序对C源程序编译之前由编译处理程序编译预处理命令行进出处理的过程。#include#include#include#include#definePI3.14159#defineN6(1)宏替换不带参数的宏定义形式:#define宏名替换文本#define

2、宏名#definePI3.14159#defineN5#defineSIZE100宏名:用户定义的标识符,不可与程序中的其它名字相同。程序中当遇到该表示符后用其后的替换文本替换。上面的SIZE可用1003个字符替换,但不可认为SIZE等于整数100.②#defineAA3#defineBB(AA+1)#defineCC(2*BB)/2x=CC/2(2*BB)/2/2(2*(AA+1))/2/2(2*(3+1))/2/2x==?③#defineLEAP_YEARyear%4==0&&year%100!==0

3、

4、year%400==0注意:对齐,否则空

5、格为替换文本的一部分①带参数的宏定义形式:#define宏名(形参表)替换文本#defineMU(x,y)((x)*(y))intfun(intx,inty){…….}②调用带参数的宏名时,一对圆括号不可少,圆括号中的实参个数与形参个数相同。若有多个实参,之间应用逗号隔开y=fun(5,2);a=MU(5,2);((x)*(y))((5)*(2))10b=6/MU(a+3,a);6/((x)*(y))6/((a+3)*(a))6/((10+3)*(10)遇到宏名用替换文本替换实参换形参计算结果③替换文本中的形参和整个表达式应该用括号括起来。#defi

6、neMU(x,y)((x)*(y))b=6/MU(a+3,a)6/((x)*(y))6/((a+3)*(a))6/(13*10)#defineMU(x,y)(x*y)b=6/MU(a+3,a)6/(x*y)6/(a+3*a)6/(10+3*10)#defineMU(x,y)x*yb=6/MU(a+3,a)6/x*y6/a+3*a6/10+3*10#defineMU(x,y)(x)*(y)b=6/MU(a+3,a)6/(x)*(y)6/(a+3)*(a)6/(10+3)*10#defineMA(x)x*(x-1)(x)*((x)-1)main(){in

7、ta=1,b=2;printf(“%d”,MA(1+a+b));}x*(x-1)1+a+b*(1+a+b-1)8(x)*((x)-1)(1+a+b)*((1+a+b)-1)12用#undef终止宏定义的作用域#definePI3.14main(){….#undefPI…….}(1)文件包含形式:#include#include”stdio.h”若文件名用双引号括起来系统先在源程序所在的文件目录内查找指定的包含文件,若找不到,在按照系统指定的标准方式到有关目录中查找若文件名用尖括号扩起来系统直接按照指定的标准方式到相关目录中查找。注意

8、:包含文件后缀不一定为.h结尾当包含文件修改后,对包含该文件的源程序要重新编译连接在一个程序中容许有多个#include命令行1.动态存储分配静态存储分配:inta;inta[10];main(){inta;a=1;printf(“%d”,a);printf(“ok”);printf(“good”);}动态存储分配:申请释放main(){申请aa=1;释放申请bb=1释放}(1)malloc函数形式:malloc(size);malloc(1);chara;返回值类型:void*NULL功能:动态分配size个字节的存储单元,返回一个指向存储单元首地

9、址的基类型为void的地址。若没有足够的内存空间可供分配,函数返回NULL举例:short*pi;float*pf;pi=(short*)malloc(2);pi=(short*)malloc(sizeof(short))pf=(float*)malloc(4);if(pi!=NULL)*pi=6;if(pf!=NULL)*pf=6.0;(1)free函数free(pi);(2)calloc函数形式:calloc(n,size);inta[n];void*NULL功能:给n个同一类型的数据项分配连续的存储单元举例:char*ps;ps=(char*)

10、calloc(10,sizeof(char));1chara[10],*ps=a;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。