教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 教学研究 >

C语言程序设计第八章函数

来源:网络收集 时间:2026-08-20
导读: 第八章 函数1. 概述 2. 函数的定义 3. 函数的返回值4. 函数的调用 5. 函数参数及其传递方式 6. 函数的嵌套与递归调用 7. 数组作为函数参数 8. 变量的存储属性 第八章 函数1. 概述 模块化程序设计 基本思想:将一个大的程序按功能分割成一些小模块 特点: 各

第八章 函数1. 概述 2. 函数的定义

3. 函数的返回值4. 函数的调用 5. 函数参数及其传递方式 6. 函数的嵌套与递归调用 7. 数组作为函数参数 8. 变量的存储属性

第八章 函数1. 概述 模块化程序设计 基本思想:将一个大的程序按功能分割成一些小模块 特点: 各模块相对独立、功能单一、结构清晰、接口简单 控制了程序设计的复杂性 提高软件的可靠性 缩短开发周期 避免程序开发的重复劳动 易于维护和功能扩充 开发方法: 自上向下,逐步分解,分而治之

第八章 函数1. 概述 C是模块化程序设计语言C程序

源程序文件1

源程序文件i

源程序文件n

预编译命令

函数1

函数n

说明部分

执行部分

C程序结构

C是函数式语言

函数分类 从用户角度 标准函数(库函数):由系统提供 用户自定义函数 从函数形式 无参函数 有参函数使用库函数应注意: 1、函数功能 2、函数参数的数目和顺序,及各参数意义和类型 3、函数返回值意义和类型 4、需要使用的包含文件

2. 函数的定义 一般格式现代风格:

函数返回值类型 缺省int型 无返回值void

合法标识符

函数类型 函数名(形参类型说明表) { 说明部分 语句部分 } 例 例 有参函数(现代风格) 例 有参函数(现代风格) 无参函数 例 ) intint max(int y) y) max(int x, x,int printstar( 空函数 dummy( ) { {intint z; z; { printf(“**********\n”); } { } 或 z=x>y?x:y; z=x>y?x:y; return(z); printstar(void ) return(z); 函数体为空 } } { printf(“**********\n”); }

函数体

传统风格:

函数类型 函数名(形参表) 形参类型说明 { 说明部分 语句部分 }

例 有参函数(传统风格) int max(x,y) int x,y; { int z; z=x>y?x:y; return(z); }

3.

例 无返回值函数 函数的返回值 void swap(int x,int y ) 返回语句 { int temp; temp=x; 形式: return(表达式); x=y; 或 return 表达式; y=temp; 功能:使程序控制从被调用函数返回到调用函数中, 同时把返值带给调用函数 } 说明: 函数中可有多个return语句 若无return语句,遇}时,自动返回调用函数 若函数类型与return语句中表达式值的类型不一 致,按前者为准,自动转换------函数调用转换 void型函数

例 函数带回不确定值printstar() { printf("**********"); } main() { int a; a=printstar(); printf("%d",a); }输出:

void printstar() { printf("**********"); } main() { int a; a=printstar(); printf("%d",a); }编译错误!

********** 10

例 函数返回值类型转换main() { int max(float x,float y); float a,b; int c; scanf("%f,%f",&a,&b); c=max(a,b); printf("Max is %d\n",c); } max(float x, float y) { float z; z=x>y?x:y; return(z); /*返回整型*/ }

4. 函数的调用 调用形式 函数名(实

参表);

max(float x, float y) { 形参 … }

函数定义(被调函数)

main() { … c= max(a,b) ; … 实参 }

函数调用(主调函数)

说明: 实参与形参个数相等,类型一致,按顺序一一对应 实参表求值顺序,因系统而定 (Turbo C、VC++ 自右向左)

例 参数求值顺序#include <stdio.h> main() { int i=2,p; /*3,3*/ p=f(i,++i); printf("%d",p); } int f(int a, int b) { int c; if(a>b) c=1; else if(a==b) c=0; else c=-1; return(c); }运行结果:0 #include <stdio.h> main() { int i=2,p; (VC++下, 2,2) p=f(i, i++); printf("%d",p);(TC下, 3,2 ) } int f(int a, int b) { int c; if(a>b) c=1; else if(a==b) c=0; else c=-1; return(c); } 运行结果:0 运行结果: 1(VC++下) (TC下)

调用方式 函数语句: 例 printstar(); 函数表达式: 例 m=max(a,b)*2; 函数参数: 例 printf(“%d”,max(a,b)); m=max(a,max(b,c));

函数声明 作用:告诉编译系统函数类型、参数个数 及类型,以便检验。

函数声明 一般形式:函数类型 函数名(形参类型 [形参名],….. ) 或 函数类型 函数名(); 函数定义与函数声明不同 函数声明位置:程序的数据说明部分 (函数内或外)

例main() { int max(float,float); /*函数声明*/ float a,b; int c; scanf("%f,%f",&a,&b); c=max(a,b); /*函数调用*/ printf("Max is %d\n",c); } max(float x, float y) /*函数定义*/ { float z; z=x>y?x:y; return(z); }

函数声明 对被调用函数要求: 必须是已存在的函数 库函数: #include <*.h> 用户自定义函数: 函数类型声明 下列情况下,可不作函数声明 若函数返回值是char或int型,系统自动按int 型处理 被调用函数定义出现在主调函数之前 有些系统(如Borland C++)要求函数声明指出 函数返回值类型和形参类型,并且对void 和 int 型函数也要进行函数声明

例 函数声明举例main() add(float x, float y) float main() { floatfloat z; { {add(float,float); /*function declaration*/ float a,b; float a,b,c; float add(); z=x+y; int c; scanf("%f,%f",&a,&b); return(z); scanf("%f,%f",&a,&b); c=add(a,b); 被调函数出现在主调函数 } c=max(a,b); 数之前,不必函数声明 printf("sum is %f",c); main() printf("Max is %d\n",c); } { float a,b,c; } int型函数可不作函数声 float add(float x, float y) scanf("%f,%f",&a,&b); 明 max(float x, float y) { float z; ( 有些编译系统不行) c=add(a,b); { float z; z=x+y; printf("sum is %f",c); z=x>y?x:y; return(z); } return(z); } }

…… 此处隐藏:1466字,全部文档内容请下载后查看。喜欢就下载吧 ……
C语言程序设计第八章函数.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1568668.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)