导图社区 C Primer Plus函数
C Primer Plus第六版函数内容总结,该思维导图主要介绍了C函数,内容有:return、运算符(
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
马克思主义原理
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
C Primer Plus
复习函数
*函数是完成特定任务的独立程序代码单元 *1、一些函数执行某些动作,如printf() 2、一些函数找出一个值供程序使用,如strlen() *使用函数可以使程序更加模块化,从而提高程序代码的可读性 *描述性的函数名能清楚的表达函数的用途和组织结构
分析程序
*void starbar(void); 函数原型告诉编译器函数starbar()的类型,分号表明这是在声明函数,不是在定义函数
一般而言,函数原型指明了函数的返回值类型和函数接受的参数类型。这些信息称为该函数的签名
函数原型可以在main()里面,也可以在他的外面
*starbar(); 函数调用表明在此处调用函数
*void starbar(void) 函数定义明确的指定了函数要做什么事情
函数参数
首先定义形参 和定义在函数中的变量一样,形参也是局部变量,属于函数私有(形参被储存在栈中) 根据个人喜好,你也可以省略形参变量名
黑盒视角
许多程序员喜欢把函数看作是根据传入信息(输入)及其生成的值或响应的动作(输出)来定义的“黑盒”
驱动程序
这种被设计用于测试函数的程序有时被称为驱动程序,该驱动程序调用一个函数,如果函数通过了测试,就可以安装在一个更重要的程序中使用
返回值
用return返回函数的值,返回值不仅可以是变量,也可以是任意表达式的值
return的另一个作用是终止函数并把控制返回给主调函数的下一条语句
在void函数中:reurn;代表终止函数,并把控制权返回给主调函数
如果返回值的类型与函数声明时的类型不同,返回值将会被转换成函数声明的返回类型
函数类型
指的是函数返回值的类型
一般先声明函数,再调用函数,再定义函数
ANSI C函数原型
允许使用未指定的参数
如printf(),第一个参数是字符串,其他参数和数量都不确定,这时可以使用部分原型
之所以使用函数原型,就是为了让编译器在第1次执行到该函数之前就知道如何让使用它,有一种方法可以省略函数原型,即就是把整个函数定义放在第一次调用该函数之前,此时,函数定义也相当于函数原型。
递归
C允许函数调用它自己,这种调用过程称为递归 *结束递归是使用递归的难点 *可以使用循环的地方通常都可以使用递归
递归的基本原理
每次调用都会返回一次,当函数执行完毕之后,控制权将被传回上一级递归
递归通常都使用if或其他等价的测试条件在函数形参等于某特定值的时候终止递归
尾递归
最简单的递归形式(因为它相当于循环)是把递归调用置于函数的末尾,即在return之前
一般而言,选择循环比选择递归较好, 首先,每次递归都会创建一组新变量,所以递归使用的内存多 其次,每次递归都会花费一定的时间,所以递归调用执行速度较慢
递归和倒序计算
例如:用递归计算一个属的二进制数
递归的优缺点
优点是递归为某些编程提供了最简单的解决方案
缺点是一些递归算法会快速消耗计算机的内存资源(函数中的变量将会以指数增长的速度创建)
所有的C函数皆平等,main()函数也会被其他函数或者自己递归调用,不过这种情况很少,并且main()是最先开始执行的,它是函数的入口
编译多源代码文件的程序
使用多个函数最简单的方法是把它们都放在同一个文件中,然后像只有一个函数的文件那样编译该文件即可
Unix操作系统下
假设有file1.c与file2.c两个内涵C函数的文件,使用cc file1.c file2.c生成一个名为a.out的可执行文件
另外,还生成两个名为file1.o与file2.o的目标文件,如果需要改动第一个文件,而第二个文件不变,则使用:cc file1.c file2.o将两个文件合并
Linux操作系统下
假设有file1.c与file2.c两个内涵C函数的文件,使用gcc file1.c file2.c生成一个名为a.out的可执行文件
另外,还生成两个名为file1.o与file2.o的目标文件,如果需要改动第一个文件,而第二个文件不变,则使用:gcc file1.c file2.o将两个文件合并
DOS命令行编译器
与UNIX操作系统类似,唯一不同的是生成的目标文件为.obj文件
Windows操作系统和苹果的IDE编译器
这二者使用的集成开发环境中的编译器是面向对象的,对于多文件程序,要使用菜单命令,把源代码文件加入一个项目中。源代码文件中的#include指令管理该文件中使用的头文件
使用头文件
把函数原型放在头文件中,就不用在每次使用头文件时都写出函数的原型 例如,把I/O函数原型放在stadio.h中,把数学函数原型放在math.h中,也可以把已定义的字符常量放在头文件中
运算符&:查找地址
指针是C语言中重要的概念之一,PC地址通常用十六进制形式表示,可以使用%p来作为指针的格式转换说明符
更改主调函数中的变量
引出指针
指针简介
指针是一个值为内存地址的变量
间接运算符:*
ptr=&bah; val=*ptr;<=>val=bah;
声明指针
int* p;指针所指向的数据类型为整型
使用指针在函数间通信
最典型的例子用函数交换两个变量
变量:名称、地址、值
计算机编译加载程序后,认为变量有两个属性:值和地址 普通变量把值作为基本量,把地址作为通过&运算符获得的派生量,而指针把地址作为基本量,把值作为通过*运算符获得的派生量
子主题
关键概念
要明白函数形参和其他局部变量都属于函数私有。而且,函数无法直接访问其他函数的变量,这种限制访问保护了数据的完整性。如果确实需要访问,可以使用指针。