- 1、本文档共30页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
关于函数 函数是具有名字的语句序列,使用函数可改善程序的结构,也用于将多处重复使用的代码编写为函数,减少代码量 函数定义和函数调用 形式参数与实际参数 参数传递 实际参数向形式参数传值 实参与形参个数相等,类型一致,按顺序一一对应 函数的返回值 局部变量与全局变量 变量的作用域与生存期 static extern 函数参数 数组作为函数参数 结构体数据作为函数参数 传值调用 函数调用执行时,将实际参数的值传递给形式参数,这个传递过程是单向的 传值调用 函数调用执行时,将实际参数变量的地址传递给形式参数 数组作为函数参数 数组作为参数有两种形式 数组元素作为实参,与一般变量相同; 形参为数组,实参为数组名 数组元素作为函数参数 数组元素等同于一个一般变量,作为实参时,是将数组元素的值传给形参 数组名作为函数参数 数组名可以作为实参,传递的是数组空间的首地址 数组名作为函数参数(续) 多维数组作为实参和形参 结构体变量作为函数参数(续) 结构体变量作为函数的实参和形参 结构体数组 变量的作用域 是指在程序的哪个范围内这个变量是有效的,即可以引用和赋值。 根据作用域可以将变量分为:全局变量和局部变量 外部变量(全局变量) 定义在函数体外,可以在源程序的任何位置定义(必须保证不在任何一个函数体内) 作用域从源文件定义位置开始之后的所有函数 外部变量通常在程序开始处所有函数前定义,以便所有函数都能使用 若在本程序中使用别的文件中定义的外部变量,则在程序开始处加extern 进行声明(与函数的原型声明功能类似) 外部变量会被各函数共同操作 根据作用域可以将变量分为: 外部变量(全局变量) 变量的作用域 同一作用域内不允许出现同名变量 不同作用域内同名变量互不影响 全局变量的作用域是整个程序 局部变量的作用域是所定义的复合语句体 嵌套的两个作用域内的同名变量,以内层定义为准 变量的生存期 变量是在程序的执行过程中才变划分内存空间的,这时候的变量才会存在 程序结束后由OS收回程序所占内存空间,变量也就不存在了 全局变量从程序开始到结束都存在 局部变量只在其所定义的复合语句执行期间才存在 程序装载到内存后所占用的内存空间称为用户区,分为数据区和代码区,其中数据区又分为静态存储区和动态存储区: 有时需要在函数执行之后保留局部变量(的值),在下一次调用时使用。 ----实现这一需求的是静态局部变量 对静态局部变量的说明: Programming in C 西安电子科技大学计算机学院 - School of Computer Science Engineering, Xidian University, China * 1. 为何if语句中的条件总是成立或不成立? 在排除可能出现的逻辑错误外,有可能与条件表达式书写不正确有关。 例如:if (x=3) x=x+8; 这时的条件x=3始终成立,语句x=x+8也总是执行。要判断x是否等于3就必须写成x = = 3。 又如:if (x=0) x=x+8; 这时条件x=0总是不成立,语句x=x+8永远不执行。要判断x是否等于0就必须写成x= =0。 同样,在其它使用条件的语句中也要注意类似问题。 C程序中常见问题-if语句 2.为什么会出现if-else不匹配? 这种错误的原因可能比较复杂;总的原则是: (1)有一个else必有一个if,所以首先在数量上要匹配 (2)逻辑关系要合理;若执行的是复合语句,不要漏掉复合语句标志{ }。 例如: if (xy) t=a; a=b; b=t; else t=m; 编译时就会提示出错信息,正确的写法: if (xy) { t=a; a=b; b=t; } else t=m; (3)若条件不成立时要求执行的语句有多条,else后必须为复合语句。 例如:if (xy) {t=a; a=b; b=t;} else {t=m; m=n; n=t;} C程序中常见问题-if语句 C程序中常见问题-定长数组与变长数组 定义定长数组: int a[5]; 变长数组: int n; int a[n]; 定义数组并初始化数组元素: int a[5] = {1,2,3,4,5}; 访问数组元素(写、读): for (i = 0; i 5; i++) a[i] = i*2; for (i = 0; i 5; i++) printf(%d ,a[i]); 变长数组: int n
文档评论(0)