当前位置:首页 >> 工学 >>

C语言函数入门-讲义(原创)


4.1 函数入门
函数的作用。 函数体现了 C 语言面向过程的模块化 模块化思想,具体作用是: 模块化 1、使用函数使程序结构清晰; 2、函数可复用,也可以反复调用; 例 1:两个程序的对比 1) #include<stdio.h> void main() { printf("****************************************\n\n"); printf(" Hello world!\n\n"); printf("****************************************\n\n"); } 2) #include<stdio.h> void f() { printf("****************************************\n\n"); } void g() { printf(" } void main() { f(); g(); f(); }

Hello world!\n\n");

函数必须先定义或声明,才能调用。 函数定义格式: 数名(形参表 形参表) //函数头 返回值类型 函数名 形参表 函数头 { //函数体 函数体 声明部分 语句 } 形参表可以是 0 个、1 个或多个参数。

注意形参表的格式: 形参变量, 数据类型 形参变量 …… 函数不返回值时,返回值类型是 void。 形参的本质是局部变量,形参只有在函数内部有效。当函数调用时,才为其 申请内存空间,函数调用时便释放内存空间,main 函数也不例外,所谓释放即 返还给操作系统。 一个程序有且只有一个 main 函数。

4.2 函数调用
调用格式如下 函数名(实参表 实参表) 函数名 实参表 以上格式,是不带分号的,意味着,函数调用本质是表达式 表达式,既然函数调用 表达式 是表达式,那么其使用方法同表达式 那么其使用方法同表达式。 那么其使用方法同表达式 此时函数有没有返回值已无关紧要,若有返回值,则函数调用表达式便可放 在赋值表达式的右边。 例 2: #include<stdio.h> int add(int a,int b) { int c; c=a+b; return c; } void main() { int a,b,c; printf("input two numbers:\n"); scanf("%d%d",&a,&b); c=add(a,b); printf("%d+%d=%d\n",a,b,c); } 形参是变量,但实参可以是类型匹配的任意表达式。 实参与形参的个数、类型都要匹配。 形参与实参同名与否无任何关系。 例 3: #include<stdio.h> int Add(int a,int b) { int c; c=a+b;

return c; } int Jia(int bb) { int c; c=100+bb; return c; } void main() { int a,b,c1,c2; printf("input two numbers:\n"); scanf("%d%d",&a,&b); c1=Add(a,100.1); printf("%d+100=%d\n",a,c1); c2=Jia(b); printf("100+%d=%d\n",b,c2); } 函数调用时,编译系统做了些什么事? 函数调用时,编译系统做了些什么事? 1、执行流程,从主调函数的该函数调用语句转移到被调函数,即转去执行 被调函数。 按值传递,即实参的值赋 2、参数传递,即实参按顺序传递给形参。而且是按值传递 按值传递 值给形参。 3、形参得到实参的值后,便开始执行被调函数的函数体。 4、被调函数执行完后,便返回到主调函数原来的地方,继续执行主调函数 剩下的部分。若有返回值,返回即可。 函数如何结束呢? 函数如何结束呢? 1、若函数无返回值,便不必有 return 语句,此时,函数要执行到函数体最 后一个语句,便可自然返回。 2、若函数无返回值,也可以使用 return 语句结束执行,此时可以根据需要 结合 if 语句来达到提前返回的目的。 3、若函数有返回值,则必须使用 return 语句返回一个值并随即结束函数。 小结: 小结: 函数体无 return 语句,便是自然返回;反之,一旦执行到 return 语句便立刻 返回, 此时可结合 if 等语句, 设置多个 return 语句以到达按指定要求返回的目的。 例 4: #include<stdio.h> void Work() { char c;

printf("Start to work:......\n"); printf("Are you tired?\n"); scanf("%c",&c); if('Y'==c || 'y'==c) { printf("You go home and take a rest.\n"); return; } printf("OK,proceed with your work.\n"); printf("End of job!\n"); } void main() { Work(); } 按值传递意味着是单向传递 单向传递,即形参在被调函数中发生改变不会影响实参的 单向传递 值。 被调函数的声明和函数原型 如果被调函数的定义在主调函数的后面,便要事先将被调函数声明。 声明的格式如下: 函数原型 原型; 函数原型; 函数原型是函数头的基础上省略具体的形参变量,而只有形参类型,也可以 不省略,当不省略时,函数原型就是函数头。 从格式中看到,声明中以分号结尾,意味着声明是一个语句 意味着声明是一个语句。 意味着声明是一个语句 #include<stdio.h> void main() { int n; printf("input number\n"); scanf("%d",&n); s(n); printf("n=%d\n",n); } int s(int n) { int i; for(i=n-1;i>=1;i--) n=n+i; printf("n=%d\n",n); } 关于执行流程的转移,可演示设置断点的调试过程。

函数的实参是表达式,而函数调用就是表达式,那么函数调用表达式亦可做 另一个函数调用的实参,此时的情况,与数学中的复合函数是相似的。当然,函 数调用表达式做表达式,要求函数调用必须有返回值。


相关文章:
C语言基本入门英语单词
C语言基本入门英语单词 - C语言常用英语单词翻译 1. 数据类型关键字(12 个) : (1). char :声明字符型变量或函数 (2). double :声明双精度变量或函数 (3...
C语言库函数rand()源代码
C语言函数rand()源代码 - 【C 语言函数 rand()源代码】 【本程序在 Dev C 4.9.9.2 下编译通过】 /* 这两个函数是 C 库中产生随机数的程序。你...
C语言 函数大全(头文件)
标签: 头文件| 函数| 语言|C语言 函数大全(头文件)_其它考试_资格考试/认证_教育专区。涵盖了C语言所有函数 包括对应的头文件 ...
C语言入门自学教程[傲梦]
C 语言入门自学教程 C 语言是一种通用的、面向过程式的计算机程序设计语言。...函数函数首部和函数体组成。函数首部用于定义函数名、函数参数(及类型)、函数 ...
C语言实验报告 函数
C语言实验报告 函数_电脑基础知识_IT/计算机_专业资料。C语言实验报告,函数的定义和调用,包括源代码和实验分析 实验名:函数的定义及调用 一、 实验目的 1、 掌握...
全国计算机等级考试二级C语言复习资料讲义
全国计算机等级考试二级C语言复习资料讲义_电脑基础知识_IT/计算机_专业资料。聪...例 1: (2010-03-12)以下叙述正确的是(B) A) C 语言程序是由过程和函数...
C语言函数练习题
C语言函数练习题 - C 语言函数练习题 一、选择题 1.一个完整的 C 源程序是【】。 A)要由一个主函数或一个以上的非主函数构成 B)由一个且仅由一个主...
C语言常用库函数
C语言常用库函数_电脑基础知识_IT/计算机_专业资料。C语言常用库函数汇总 C 库函数 1.数学函数 头文件为#include&lt;math.h&gt;或者#include&quot;math.h&quot; 函数名 abs ...
C语言函数库详解(收藏版)
C语言函数库详解(收藏版) - c 语言函数库 目录 第一章(C 标准库) ......
C语言程序讲义
C语言程序讲义_教学案例/设计_教学研究_教育专区。C 语言程序:第一章:C语言...(目标文 件) ,然后将目标文件与 C 语言提供的各种库函数连接起来生成一个后缀...
更多相关标签: