编译预处理和动态存储分配课件.ppt

编译预处理和动态存储分配课件.ppt

ID:57028354

大小:46.50 KB

页数:19页

时间:2020-07-26

编译预处理和动态存储分配课件.ppt_第1页
编译预处理和动态存储分配课件.ppt_第2页
编译预处理和动态存储分配课件.ppt_第3页
编译预处理和动态存储分配课件.ppt_第4页
编译预处理和动态存储分配课件.ppt_第5页
资源描述:

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

1、全国计算机等级考试教程 C语言程序设计(二级)万红波烟台大学第十三章编译预处理和动态存储分配编译预处理动态存储分配13.1编译预处理编辑程序C语言源文件C语言编译程序产生目标程序连接程序C函数库产生可执行程序hello.chello.objhello.exe13.1编译预处理“#”开头的行--预处理命令预处理命令末尾不加;区别于语句在编译程序进行编译之前,由预处理程序进行处理hello.chello.ihello.objhello.exe预处理编译器链接器13.1编译预处理13.1.1宏替换#define

2、13.1.2文件包含#include13.1编译预处理13.1.1宏替换不带参数的宏定义#define宏名替换文本#definePI3.1415926预处理程序对源程序中所有名为PI的标识符替换为3.141592613.1编译预处理13.1.1宏替换#definePI3.1415#defineADDPI(PI+1)#defineTWO_ADDPI(2*ADDPI)intmain(){doublex=TWO_ADDPI*2;}#definePI3.1415#defineADDPI(3.1415+1)#def

3、ineTWO_ADDPI(2*(3.1415+1))13.1编译预处理13.1.1宏替换不能替换双引号中与宏名相同的字符串。不能替换用户标识符中的成分。对其他与宏名相同的字符串进行机械的替换操作#defineSIZE100intmain(0{inta=SIZE;intaSIZE=a*SIZE;printf(“2*SIZE=%d”,SIZE*2);}13.1编译预处理带参数的宏定义#define宏名(形式参数表)替换文本#defineMU(X,Y)((X)*(Y))intmain(){intm=MU(2,3

4、);inta=3;intb=MU(a+3,a);}MU(a+3,a)替换为((a+3)*(a))#defineMU(X,Y)(X*Y)intmain(){intm=MU(2,3);inta=3;intb=MU(a+3,a);}MU(a+3,a)替换为(a+3*a)13.1编译预处理终止宏定义#definePI3.14intmain(){...}#undefPI...doublefun(intx){...}练习题13.3//程序的输出结果#include#defineFUDGF(y)2.8

5、4+y#definePR(a)printf("%d",(int)(a))#definePRINT1(a)PR(a);putchar('')main(){intx=2;PRINT1(FUDGF(5)*x);}练习题13.11#include#defineSWAP(t,x,y){ttemp=x;x=y;y=temp;}voidmain(){inta=3,b=7;SWAP(int,a,b);printf("%d,%d",a,b);}13.1编译预处理13.1.2文件包含在一个文件中去包

6、含另一个文件的全部内容//main.c#include“myfun.h”voidmain(){fun();printf("Hello,World!");}//myfun.hexternintfun();//myfun.cintfun();{printf(“Fun”);return1;}13.1编译预处理13.1.2文件包含-头文件#includevoidmain(){printf("Hello,World!");}13.2动态存储分配静态存储分配:通过定义,分配存储空间;动态

7、存储分配:在程序执行期间,通过”申请”,分配内存空间,不用的时候可以释放。用户通过标准的库函数实现动态的存储分配malloc,calloc,free函数stdlib.h13.2动态存储分配13.2.1malloc函数和free函数malloc函数-分配size个字节的存储空间,返回指向存储空间首地址的指针。返回的地址是void*,要根据需要进行强制类型转换。动态分配的存储空间只能靠指针来引用。void*malloc(unsignedintsize);voidfree(void*);13.2动态存储分配13

8、.2.1malloc函数和free函数#include#include#defineSIZE10intmain(intargc,char*argv[]){int*p;p=(int*)malloc(SIZE*sizeof(int));if(p!=NULL)printf("MemoryAllocationSuccess!");*p=23;printf(“*p=%d”,*p);free(p)

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

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

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