- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2005年3月 第十二章 对C语言的深入讨论 新视野教育教学专用教材 第12章 对C语言的深入讨论 12.1.1 主函数的参数 main(int argc, char *argv[ ]) { …… } 12.1.1 主函数的参数 带参数的主函数调用形式: 可执行文件名 参数1 参数2 …… 参数n 在DOS系统提示符下键入的这一行字符称为命令行。可执行文件名称为命令名,其后的参数称为命令行参数,命令名与各参数之间用空格进行分隔。 12.1.1 主函数的参数 argc 称作参数计数器,它的值是包括命令名在内的参数个数。 argv 指针数组的作用是存放命令行中命令名和每个参数字符串的首地址。 C:\my a command line 12.1.1 主函数的参数 【例12.1】显示命令行参数程序。 void main(int argc,char *argv[ ]) { int i=0; while (--argc0) printf(%s\n,argv[++i]); } 12.1.2 参数指针 12.1.2 参数指针 函数的嵌套调用 函数的嵌套调用 main( ) { int n=3; printf (%d\n,sub1(n)); } 12.1.3 参数的递归调用 直接调用sub 函数本身 12.1.3 参数的递归调用 12.1.3 参数的递归调用 【例】编一递归函数求n!。 程序如下: float fact (int n) { float f=0; if(n0) printf(n0,error!); else if (n==0 || n==1) f=1; else f=fact(n-1)*n; return (f); } 递归调用过程 12.1.3 参数的递归调用 递归调用过程 12.1.3 参数的递归调用 编译预处理包括: 宏定义 文件包含 12.2.1 不带参数的宏定义 12.2.1 不带参数的宏定义 12.2.2 带参数的宏定义 12.2.2 带参数的宏定义 【例12.6】带参数的宏定义。 #define MAX(x,y) ((x)(y)?(x):(y)) main( ) { … printf(%d\n,a,b, MAX(a,b)); printf(%d\n,MAX(a+m,b+n)); } 12.2.2 带参数的宏定义 【例12.7】分析下面程序运行后的输出结果。 #define MUL(a,b) ((a)*(b)) main( ) {printf(%d\n, MUL(10-5,5+1)/2); } 12.2.2 带参数的宏定义 【例12.8】分析下面程序运行后的输出结果。 #define MA(x) x*(x-1) main( ) { int a=1,b=2; printf(%d\n, MA(1+a+b)); } 12.2.3文件包含 1.命令的一般形式 格式1: #include 文件名 格式2: #include 文件名 7.8 编译预处理(续) 例如:调用sin(x) 函数时,要在程序的开头使用如下命令: #include math.h 在预处理时,用math.h文件内容替换 #include math.h命令行。 void sub(int a,int b) { int c; a=a+b; b=b+a; c=b-a; printf(sub:\ta=%d b= %d c= %d\n,a,b,c); } int a = 5; void f(int x, int y) { int b,c; b=a+x; c=a-y; printf(%d\t%d\t%d\n,a,b,c); } 12.3 标识符的作用域 变量的生存期与变量的存储分类 变量的存储类别 变量定义语句的一般形式 自动变量 ⑴ 内存分配 调用函数或执行分程序时在动态存储区为其分配存储单元,函数或分程序执行结束,所占内存空间即刻释放。 ⑵ 变量的初值 定义变量时若没赋初值,变量的初值不确定;如果赋初值则每次函数被调用时执行一次赋值操作。 ⑶ 生存期 在函数或分程序执行期间。 ⑷ 作用域 自动变量所在的函数内或分程序内。 2.静态变量(static类别) 除形参外,局部变量和全局变量都可以定义为静态变量。 静态变量 ⑴ 内存分配 编译时,将其分配在内存的静态存储区中,程序运行结束释放该单元。 ⑵ 静态变量的初值 若定义时未赋初值,在编译时,系统自动赋初值为0;若定义时赋初值,则仅在编译时赋初值一次,程序
您可能关注的文档
最近下载
- 人教版(2024)七年级下册数学第七章 相交线与平行线 大单元教学设计 .pdf VIP
- 研究生英语综合教程(上)熊海虹 课文翻译及课后习题答案.pdf VIP
- 监理大纲光伏电站工程.pdf VIP
- GB_T 31497-2024 信息技术 安全技术 信息安全管理 监视、测量、分析和评价.pdf VIP
- 无人机法律法规与安全飞行 第2版 第二章 空气空间法律制度.pptx VIP
- 艺术概论全套配套课件孙丽华11 第二主题 话题7 文学漫步.ppt VIP
- 艺术概论全套配套课件孙丽华10 第二主题 话题6 舞之神韵.ppt VIP
- 水泥混凝土路面施工及验收规范.pdf VIP
- 艺术概论全套配套课件孙丽华9 第二主题 话题5 音乐之声.ppt VIP
- 《岳阳楼记》文言知识点梳理.doc VIP
文档评论(0)