版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、函数间数据传递方式第1页,共11页,2022年,5月20日,9点43分,星期一函数之间的数据传递函数之间的逻辑联系是通过函数调用实现的,在函数调用过程中,函数之间的数据联系则是由函数间的数据传递建立的。在C语言中,函数间数据传递有3种方式:参数传递函数返回值全局变量第2页,共11页,2022年,5月20日,9点43分,星期一参数传递函数间参数传递是指把变量或常量的有关信息传递给函数,而传递的过程发生在函数调用期间函数间参数传递的数据类型可以是变量、数组、指针、结构以及函数等在函数调用时,实参和形参不是靠名称相同来传递数据,而是靠对应位置来传递数据,这就要求形参和实参在数据类型、个数和顺序上一一
2、对应函数间传递参数方式有两种:传值与传址第3页,共11页,2022年,5月20日,9点43分,星期一传值在传值方式下,调用函数将实参的数据复制到被调用函数的形参中,使得形参取得对应的值例:#include void swap(int,int);main()int a,b; scanf(“%d%d”,&a,&b); printf(“a=%d,b=%dn”,a,b); swap(a,b); printf(“a=%d,b=%dn”,a,b); void swap(int x,int y)int t; t=x; x=y; y=t; printf(“x=%d,y=%dn”,x,y); 传值调用的时候,形
3、参跟实参各自占用自己的存储空间,当形参发生改变时,不会影响实参的值。当调用结束时,程序返回调用函数,形参的存储单元就被撤销。 传值法的最大特点是实参和形参占有不同的存储单元,形参只能复制实参的值而不能改变实参的值,这对隐藏数据特别有利第4页,共11页,2022年,5月20日,9点43分,星期一传址在传址的方式下,调用函数将实参的地址复制到对应的参数中去,形参通过地址读取实参的数据。由于实参和形参指向同一地址,因而共享同一存储单元中的数据。传值方式就是通过指针进行传递。例:#include void swap(int *,int *);main()int a,b; scanf(“%d%d”,&a
4、,&b); printf(“a=%d,b=%dn”,a,b); swap(&a,&b); printf(“a=%d,b=%dn”,a,b); void swap(int *x,int *y)int t; t=*x; *x=*y; *y=t; printf(“x=%d,y=%dn”,*x,*y);ab&a&bxy 传址是将实参地址传给形参,当形参地址所指的值发生改变时,实际就是实参对应地址所指的值发生了改变。当被调用函数执行完了之后,形参也会被撤销掉。 传址最大特点就是被调用函数的形参所指向的变量就是调用函数中的变量。第5页,共11页,2022年,5月20日,9点43分,星期一形参与实参类型对于
5、形参和实参在传递时,需要注意参数类型的对应总体原则是形参与实参的数据类型要一致,具体对应类型参考书上P193的表10-1例题:输入10个整数,编写一个函数,返回这10个整数的平均值第6页,共11页,2022年,5月20日,9点43分,星期一参数传递使用数组名作函数参数,即使在定义形参的时候定义为“int a10”类似的形式,但编译系统并不单独开辟存储区存放形参数组,实参不是把值一个一个传给形参,而是把实参数组的起始地址传给形参。这样,形参数组与实参数组共享存储空间,当形参数组中元素值发生变化时,实参数组的值也会发生变化。编译系统不对形参数组大小作检查,因此一维数组可以不指定大小,数组名后直接跟
6、个空的方括号,数组的元素个数可以用其他参数来传递。二维数组名也可以做实参和形参,在定义形参时,可以将二维数组的第一维大小省略。例如:int max(int b5)第7页,共11页,2022年,5月20日,9点43分,星期一参数传递例题:最长相似字符串 输入2个字符串(每个字符串长度不超过255),从第一个字符开始对比两个字符串,检查下两个字符串相同位置上的连续字符串最长长度是多少。例如字符串“student”和字符串“study”,两者最长相似字符串长度为4,字符串“welcome to usaco”和字符串“forcomedto usaco”的最长相似字符串长度是8第8页,共11页,2022
7、年,5月20日,9点43分,星期一函数返回值对于函数的返回值类型,可以是整型、实型、字符型,也可以是指针类型,即返回1个地址。当函数返回值是地址时,称该函数是指针函数指针函数类型定义:数据类型 *函数名(形参表)函数体;第9页,共11页,2022年,5月20日,9点43分,星期一函数返回值例题:截取字符串 给定一个字符串(长度小于255),指定两个整数m和n,从给定的字符串中截取出从第m个字符开始连续n个字符,作为1个新的字符串输出。例如给定字符串为“information system”,m值为6,n值为6,则截取出来的新字符串为“mation”第10页,共11页,2022年,5月20日,9点43分,星期一练习书P214的第5题(1.c/1.in/1.out)输入2行整数,每行有5个整数,将两行整数对应位置的数进行比较,如果上1行的某个位置值比下1行对应位置上的值大或者相等,则输出“+”,否则输出“-”,注意,输出结果总共有5个“+”号和“-”号,每个符号中间用1个空格隔开。例如输入“11 23 5 7 9”和“77 1 32 18 9”,则输出“- + - - +”.(2.c/2.in/2.out)查找最长*号串:有一串字符串,里面有一些*号,定义从某个*号开始到下一个*出现之前或者字符串尾,中间字符串的个数(不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 47442.1-2026油气区二氧化碳地质利用与封存潜力评价方法第1部分:地质利用
- 幼儿园教师职业认同感与留任意向-基于2023年人事流动数据统计关联
- 国际贸易(正考)
- 建筑垃圾制砂商砼搅拌生产线项目可行性研究报告模板申批拿地用
- 广西北海市2025年公共资源(建设工程类)招标投标评标专家考试题库及答案
- 轻工企业安全生产许可证实施办法
- (完整版)高处作业安全培训方案
- 2026届江苏省苏州市高三三模语文试题(含答案)
- 2026各行业上半年工作复盘总结+下半年规划方案模板 可编辑
- 现代职教体系贯通培养项目申报书
- GB/T 32826-2026光伏发电系统建模导则
- 部编版小学语文五年级下册期末测试卷含答案
- 健康管理技术与实施方案手册
- 2026年系统集成项目管理工程师真题及答案
- 《机械制图(多学时)》中职全套教学课件
- 我们身边的知识产权智慧树知到期末考试答案章节答案2024年湘潭大学
- 告别童年、拥抱青春六一主题班会
- 房屋装修免责协议书
- 食品风味化学2.3-苦味和苦味分子2
- 血凝的基本知识课件
- 腾讯专有云TCE工程师认证复习备考试题库大全(含答案)
评论
0/150
提交评论