导图社区 第7章 用函数实现模块化程序设计
在设计一个较大的程序时,往往把它分为若干个程序模块,每一个模块包括一个或多个函数,每个函数实现一个特定的功能。一个C程序可以由一个主函数和若干个其他函数构成。
文件有不同的类型,在程序设计中,主要用到两种文件: (1) 程序文件。包括源程序文件(后缀为.c)、目标文件(后缀为.obj)、可执行文件(后缀为.exe)等。这种文件的内容是程序代码
第九章:用户自己建立数据类型 “第九章:用户自己建立数据类型 9.1 定义和使用结构体变量 9.1.1 自己建立结构体类型 C语言允许用户自己建立由不同数据类型组成的组合型的数据结构,它称为结构体。
指针变量是专门用来存放变量的地址(即指针)的变量。指针变量的值是地址。定义指针变量定义指针变量的一般形式为: 类型名 * 指针变量名; 一个变量的指针的含义...
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
第7章 用函数实现模块化程序设计
7.1为什么要用函数
1.如果程序的功能太多,规模比较大,把所有的程序代码都写在一个主函数中,就会使主函数变得庞杂、头绪不清,使阅读和维护困难。 2.有时一个功能要多次实现,就需要多次重复编写,会使程序冗长、不精练。
函数就是功能,每一个函数用来实现一个特定的功能,函数的名字应该反映其代表的功能
函数声明:函数类型符 函数名(); 函数调用:函数名(); 函数定义:函数名()
7.2 怎样定一个函数
7.2.1 为什么要定义函数
不定义不知道函数要完成什么功能
定义函数包含的内容:
(1)指定函数的名字,以便以后按名调用
(2)指定函数的类型,即函数返回值的类型
(3)指定函数的参数的名字和类型,以便在调用函数时向他们传递数据。
(4)指定函数应当完成什么操作,也就是函数时做什么的,即函数的功能。
系统提供的库函数,不必定义。只需要用#include指令把有关的头文件包含到本文件模块中即可。
7.2.2 定义函数的方法
1.定义无参函数
2.定义有参函数
3.定义空函数——调用时什么也不做,没有任何实际作用。
7.3 调用函数
7.3.1 函数调用的形式
函数调用的一般形式:函数名(实参列表)
按函数调用在程序中出现的形式课位置来分
1.函数调用语句:把函数调用单独作为一个语句。
2.函数表达式:函数调用出现在另一个语句,作为赋值表达式的一部分。
3.函数参数:函数调用作为另一个函数调用时的实参。
7.3.2 函数调用时的数据传递
1.形式参数和实际参数
2.实参和形参间的数据传递
7.3.4函数调用的过程
7.3.4 函数的返回值
(1)函数的返回值是通过函数中的return语句获得的。
(2)函数值的类型——定义时已经指定
(3)在定义函数时指定的函数类型一般应该和return语句中的表达式类型一致
(4)对与不带回值得函数,应当用定义函数为“void”类型(或空类型)
7.4 对被调用函数的声明和函数原型
函数原型:函数的首行(函数声明+;)
7.5 函数的嵌套调用
按照从上到下的编译理解嵌套
7.6 函数的递归调用
定义:在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为 函数的递归调用。
不理解:如果是直接调用函数本身,执行到调用的语句后,又重新回到开头吗?这样会造成无限循环吧
7.7 数组作为函数参数
7.7.1 数组元素做函数实参
数组元素可以做函数实参,但不能做形参;数组名可以实参和形参
7.7.2 一维数组名作函数参数
7.7.3 多维数组名做函数参数
可以用多维数组名作为函数的实参和形参,在被调用函数中队形参数定义时可以指定每一维的大小,也可以省略第一位的大小说明,但是不能将第二位以及其他高维的大小说明省略。
7.8 局部变量和全局变量 (变量的作用空间)
7.8.1 局部变量
1.在函数内部定义,只在本函数范围内才能引用,本函数以外不能引用。
2.在复合语句内定义,只在复合语句内才能引用,复合语句以外不能引用。
局部变量可用储存类型:auto(默认) register static
7.8.2 全局变量
全局变量有效范围:从定义变量的位置开始到本源文件结束
7.9 变量的存储方式和生存期 (变量存在时间)
7.9.1动态存储方式与静态存储方式
静态存储方式:在程序运行期间由系统分配固定的存储空间的方式
动态存储方式:在程序运行期间根据需要进行动态地分配存储空间的方式
静态存储区:全局变量、局部静态变量(static局部变量) 动态存储区:形参变量、局部动态变量(auto register) 函数调用现场保护和返回地址
静态变量:从程序开始执行到程序结束 动态变量:从包含该变量定义的函数开始执行至函数执行结束
7.9.2 局部变量的存储类别
局部变量、形参
1.自动变量(auto) 可以省略不写
2.静态局部变量(static局部变量):若希望函数调用结束后,局部变量的值保留,则指定改变量为静态局部变量,用static对变量加以声明
3.寄存器变量(register)
7.9.3 全局变量的存储类别
全局变量都是存放在静态存储区的
1.在一个文件内扩展外部变量的作用域(在一个程序文件里面)
用extern声明外部变量
2.将外部变量的作用域扩展到其他文件(多个程序之间)
3.将外部变量的作用域限制在本文件中
7.9.4 存储类别小结
7.10 关于变量的声明和定义
7.11 内部函数和外部函数
7.11.1 内部函数——静态函数
内部函数:只能被本文件中其它函数调用 定义内部函数:static 类型名 函数名(形参表);
7.11.2 外部函数
定义外部函数: extern int fun(int a,int b) 省略extern时,默认为是外部函数