《c语言与设计》第八讲-清华李宛洲教材.ppt

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序设计基础 2005.9 第八讲 函数(二 ) 教学内容 函数基本概念回顾 实参是变量与实参是地址的区别 通过实参地址取得函数返回值 局部变量与全局变量作用域 函数与程序结构 文件结构 函数调用形式 C语言生长树 二进制与数据类型 变量三要素:名字、地址、字节数 输入输出函数 数组类型与结构变量 逻辑运算 if-else结构 for()结构 程序设计 初级阶段 while()结构 switch()结构 功能构件化 程序设计 基础 数据私密化 程序大纲化 程序风格-函数 回顾--函数的基本概念 C源程序必须有,也只能有一个主函数main; 程序一定是从main函数开始,最后在 main函数中结束整个程序的运行。 一个源文件由一个或多个函数组成; 除去main函数之外,所有函数都是平行的、互相独立的,即在一个函数内只能调用其他函数,不能再定义一个函数(嵌套定义)。 一个函数可以调用其他函数或其本身,但任何函数均不可调用main函数。 int function(int i_p, char ch_a ) { …… } 函数说明、形式参数与实际参数 函数的一般形式是 类型说明 函数名(参数表) { …… return(); } 类型说明是C语言中任何一种有效的数据类型关键字,或者是结构类型说明符.函数类型实际上是函数返回值的类型. 函数名是C语言中有效的变量命名。 参数表可以为空,但必须保留圆括弧。 出现在函数参数表内的参数称之为形式参数,它的作用是说明在调用函数时候,调用程序需要代入函数的参数个数、数据类型. 调用程序在调用函数时候,需要代入函数参数表的参数称之为实际参数。 function(i_p, ch_a ); 函数的三代表: 类型、参量、返回值 形参的三代表: 类型、个数、位置 int main() { char i,x,s[]; ….. } 主函数存储区域 i x s 2000 2002 2004 1000 l x s 4002 4004 4006 i 4000 int search(char *s,char x) { char i,l; ….. } 函数search()存储区域 3000 主函数数据区 函数search()数据区 a a b c \0 2004 a int search(char *,char ); 函数形式参数表 函数参数表 函数调用过程中,主函数变量x的值传递给被调函数变量x 函数调用过程中数组s的首地址传递给被调函数变量s 形式参数与实际参数的结合 什么时候传递变量的值?什么时候传递变量的地址? 传递数组地址是为了节省存储空间 i=search(s,x); 可以理解为调用时,实参向形参赋值 x=a; s?abc; void example(int x,int y) {x=10; y=15; } int main(void) {int a=2,b=3; example(a,b); cout“a=”a“b=”bendl; return(0); } 非数组的形参与实参传递特点 在某次运行中分配给主调函数的变量a,b地址 同次运行中调用函数example后其内部变量x,y的地址以及传递过来的实参 从example返回后变量a,b的地址以及数值不变 它们仅是在两个函数之间单向传递数值 int main() { char i,x,s[]; ….. } i x s 2000 2002 2004 1000 l x a 4002 4004 4006 i 4000 int search(char *a,char x) { char i,l; ….. } 3000 a a b c \0 2004 a int search(char *,char ); 一个接收地址的变量 函数调用时,s数组的首地址传递给被调函数内部变量a 实参是地址 i=search(s,x); char s[10]; 内存 s 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 s[0] s[1] s[2] s[3] s[4] s[5] s[6] s[7] s[8] s[9] a=s; a b c \0 a *(a+0) *(a+1) *(a+9) 相当于给定了a的首地址 操作a就是操作数组b int search(char *s,char); //函数声明,2个形参数:字符型数组,字符 int main(void) {int i; char s[40],x; cout输入字符串s:; cins; cout有哪些信誉好的足球投注网站字符x是:; cinx; i=search(s,x); //实际参数表 if(i0)couti=iendl; else cout没有匹配的字符存在!

文档评论(0)

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

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

1亿VIP精品文档

相关文档