第十一章 C语言:2.1.6函数专题.ppt

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
内容摘要 函数概念和定义 自定义函数 参数和返回值 传值调用和传址调用 局部变量和作用域 调用时的压栈过程 返回时的出栈过程 函数概念和定义 我们用过许多库函数 printf 向屏幕输出格式化的数据:整数,字符… … scanf 从键盘输入格式化的数据 sin 数学函数,用来求正弦 函数是c语言的模块 c程序由很多函数组成 每个c程序都有main函数 main函数是c程序的入口点 程序员可以使用库函数 程序员可以自定义函数 函数概念和定义 函数的作用 函数使我们的程序清晰明白 为开发人员提供解决问题的方法:细化 一次定义,处处使用,利用以有的代码 抽象出公共的部分,隔离开易变部分 函数用法 使用之前必须先定义 通过函数调用来使用,类似上下级管理形式 调用时指定函数名字和所需要的信息(参数) 调用完成后向老板报告工作,递交报告(返回值) 函数概念和定义 函数概念和定义 使用已有函数 包含函数所在头文件 在自己的程序里调用库函数 链接上函数所在的库 数学库:math.h -lm 字符和字符串:stdlib.h string.h 输入输出函数库:stdio.h 函数概念和定义 使用已有函数 函数概念和定义 什么情况下自定义函数 需要一个功能相对独立的子模块 一段代码多次使用 如何自定义函数 明确函数功能,参数和返回值类型 声明函数原型,建议放在头文件中 定义函数体内容 函数概念和定义 声明函数原型 声明了函数的名字,参数个数和类型,返回值类型 让调用者知道如何调用 int myabs(int n); /*计算整数n的绝对值*/ 函数概念和定义 定义函数体 int myabs(int n) /*计算整数n的绝对值*/ { if(n0) n = -n; return n; //执行完后把结果给调用者 } /*函数结尾*/ /* 这里是函数外部 */ 函数概念和定义 函数体执行 从大括号内第一行代码开始 执行到return或是函数结尾结束 int myabs(int n) { /*函数入口点,从这里开始执行 if(n0) n = -n; return n; /*函数在这里结束*/ /*n ++ 这里的代码不会被执行*/ } /*函数结尾*/ 参数和返回值 函数调用-形参,实形和返回值 调用者和被调用者之前沟通的桥梁 int abs(int n); /* 声明时的n为形式参数,说明被调用者需要的信息*/ int main() { int a = -3; int b = abs(a); /*调用时的a为实际参数,调用者提供实际信息*/ /* b 用于保存返回值: 调用者收到工作报告 */ /* int c = abs(9); 用实际参数9调用*/ …… } 传值调用和传址调用 传值调用:把实际参数复制一份,将复本传入子函数 int abs(int n); /*函数声明时指明参数是数值类型*/ int main() { int a = -3; int b = abs(a); /* 把a复制一份,将复本传进去进行操作 * a本身并没有被子函数修改 * a 是main中的变量,abs没有办法访问到a */ …… } 传值调用和传址调用 传址调用:把实际参数的内存地址传入子函数 int abs(int *n); /*函数声明时指明参数是指针类型*/ int main() { int a = -3; int b = abs(a); /* 把变量a的内存地址传给子函数 */ …… } int abs(int *n) /* 指针n指向要操作的变量 { * 可以通过变量地址间接的找到变量 *n = -3; * 能够修改父函数内的变量 */ … … } 局部变量作用域 函数内部定义的变量,只有在该函数内部才能通过变量名找到,函数外部不可见 int add(int a, int b) { int sum = 0; /* 只有在add内部才能使用sum */ ch = ‘z’; /* 错误:add内看不到main的局部变量ch … … } /* 函数外面看不见 add 内定义的变量sum */ int main { char ch = ‘x’; /* ch只能在main内部使用 */ sum ++; /* 错误:在main里看不到add内定义的局部变量sum */ } 局部变量作用域 在函数外部看不到局部变量,只能通过地址间接访问 int main() { int a = -3;

文档评论(0)

xuefei111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档