- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ch03第03讲 函数
3.10.1 宏定义指令 2 带参数的宏定义 带参宏定义的形式很象定义一个函数,格式为: #define 宏名 ( 形参表 ) 表达式串 例如作如下宏定义: #define S(a,b) (a)*(b)/2 程序中可使用S(a,b),预处理后产生中间文件,其中S(a,b)被替换成(a)*(b)/2。注意,宏定义形参通常要用括号括起来,否则容易导致逻辑错误。例如,如果定义: #define S(a,b) a*b/2 那么程序中的S(3+5,4+2)就会被宏展开为3+5*4+2/2,不符合定义的真正的意图。 带参宏定义形式上象定义函数,但它与函数的本质不同,宏定义仍然只是产生字符串替代,不存在分配内存和参数传递。 3.10.2 文件包含指令 文件包含用#include指令,预处理后将指令中指明的源程序文件嵌入到当前源程序文件的指令位置处。格式为: #include 文件名 或 #include 文件名 第一种方式称为标准方式,预处理器将在include子目录下搜索由文件名所指明的文件。这种方式适用于嵌入C++提供的头文件,因为这些头文件一般都存在C++系统目录的include子目录下。而第二种方式编译器将首先在当前文件所在目录下搜索,如果找不到再按标准方式搜索。这种方式适用于嵌入用户自己建立的头文件。 一个被包含的头文件中还可以有#include指令,即include指令可以嵌套,但是,如果同一个头文件在同一个源程序文件中被重复包含,就会出现标识符重复定义的错误。例如:头文件f2.h中包含了f1.h,如果文件f3.cpp中既包含f1.h,又包含f2.h,那么编译将提示错误,原因是f1.h被包含了两次,那么其中定义的标识符在f3.cpp中就被重复定义。避免重复包含可以用条件编译指令。 3.10.2 文件包含指令 3.10.3 条件编译指令 1 用宏名作为编译的条件 格式为: #ifdef宏名 程序段1 [#else 程序段2] #endif 2 表达式的值作为编译条件 格式为: #if 表达式 程序段1 [#else 程序段2] #endif 当希望在不同条件下编译程序的不同部分。这种情况就要使用条件编译指令。 其中程序段可以是程序也可以是编译预处理指令。可以通过在该指令前面安排宏定义来控制编译不同的程序段。 例:在调试程序时常常要输出调试信息,而调试完后不需要输出这些信息,则可以把输出调试信息的语句用条件编译指令括起来。形式如下: #ifdef DEBUG cout a=a\tx=xendl; #endif 在程序调试期间,在该条件编译指令前增加宏定义: #define DEBUG 调试好后,删除DEBUG宏定义,将源程序重新编译一次。 条件编译指令包括:#if、#else、#ifdef、#ifndef、#endif、#undef等。 #ifndef与#ifdef作用一样,只是选择的条件相反。 #undef指令用来取消#define指令所定义的符号,这样可以根据需要打开和关闭符号。 第三讲 函数 再见 谢谢! 3.1.3 函数的调用【例3.1】 main( )函数 调用max(2.5,4.7 ) 函数max(2.5,4.7 ) return 4.7 主程序后续语句 【例3.1】 输入两个实数,输出其中较大的数。其中求两个实数中的较大数用函数完成。 程序如下: #include iostream using namespace std; float max(float a,float b){ return(a=b?a:b);} int main(){ float x,y; cout输入两个实数:endl; cinxy; coutx和y中较大数为max(x,y)endl; return 0; } 3.2.1 函数的参数传递及传值调用【例3.2】 调用power(4.6,3 ) 函数power(4.6,3 ) return 97.336 主程序后续语句 n= 3 x= 4.6 c= ‘a’ 【例3.2】 实参和形参对应关系的示例。 float power(float x,int n){ //求x的n次幂 float p=1; while(n--) p*=x; return p; } int main(){ int n=3; float x=4.6; char c=a; coutpower(x,n)=power(x,n)endl; coutpower(c,n)=power(c,n)endl; coutpower(n,x)=power(n,x)endl; return 0;} 3.2.1 函数的参数传递及传值调用【例3.2】 调用power(a,3 ) 函数power(97,
您可能关注的文档
最近下载
- 《短歌行》《归园田居(其一)》情景默写(附参考答案)--统编版高中语文必修上册.pdf VIP
- T_AHEMA 002—2020_HDPE土工膜漏点双电极法测量.pdf VIP
- 第1单元活动1 认识生活中的算法(教学课件)湘科版信息科技五年级上册.ppt
- 3DMine矿业工程软件-培训.pptx VIP
- 2024年AI面试实践手册-牛客_8705.docx
- 标志设计与品牌的关系.pptx VIP
- 新22J01《工程做法》(新疆图集).pdf VIP
- 一种用于双电极法检测土工膜渗漏的测量仪.pdf VIP
- 对外业务合作管理办法.pdf VIP
- 【中职】高教2023版 世界历史第2课 古代希腊罗马 PPT课件.pptx VIP
文档评论(0)