所谓函数的调用就是在一个函数体中引用另外一个已经定义了的函数,前者称为主调用函数,后者称为被调用函数。实际参数的作用是将它的值传递给被调用函数中的形式参数。2)函数表达式。这种在调用一个函数的过程中又调用了另一个函数的方式,称为嵌套函数调用,在输出一个函数的值时经常采用这种方法。例如:其中,函数funtion1(i,j)是作为printf()函数的一个实际参数处理的,它也属于嵌套函数调用方式。......
2023-11-17
C51中,与使用变量一样,在调用一个函数之前(包括标准库函数),必须对该函数的类型进行说明,即“先说明,后调用”。如果调用的是库函数,一般在程序的开始处用预处理命令“#include”将有关函数说明的头文件包含进来。例如,前面例子中经常出现的预处理命令#include<stdio.h>,就是将与库输出函数printf()有关的头文件stdio.h包含到程序文件中来。
头文件“stdio.h”中存有有关库输入、输出函数的一些说明信息,如果不使用这个包含命令,库输入、输出函数就无法被正确地调用。如果调用的是用户自定义函数,而且该函数与调用它的主调函数在同一文件中,一般应该在主调用函数中对被调用函数的类型进行说明。
函数说明的一般形式如下:
类型标识符 被调用的函数名(形式参数表);
其中,“类型标识符”说明了函数返回值的类型;“形式参数表”中说明各个形式参数的类型。需要注意的是,函数的说明与函数返回值的定义是完全不同的。函数的定义是对函数功能的确立,它是一个完整的函数单位;而函数的说明只是说明了函数返回值的类型。两者在书写形式上也不一样,函数说明结束时在圆括号的后面需要由一个分号作为结束标志;而在函数定义时,被定义函数名的圆括号后面没有分号,即函数定义还未结束,后面应接着书写形式参数说明和被定义的函数体部分。如果被调函数是在主调函数前面定义的,或者已经在程序文件的开始处说明了所有被调函数的类型,在这两种情况下可以不必再在主调函数中对被调函数进行说明。也可以将所有用户自定义函数说明另存为一个专门的头档,需要时用include将其包含到主程序中去。(www.chuimin.cn)
C语言程序中不允许在一个函数定义的内部包括另一个函数的定义,即不允许嵌套定义。但是允许在调用一个函数的过程中包含另一个函数调用,即嵌套函数调用在C语言程序中是允许的。
下面举一个函数调用的例子。若数组data0中存有16个小于0x10的十六进制数,要求得到这16个数据的数字字符的ASCII码值,分别按顺序存入片内数据存储区的30H~3FH中。编写程序如下:
程序执行结果:
这个例子中,主函数main()定义好了数据指针data_pointer,使用16次循环完成将16个1位十六进制数据转换为ASCII码的工作,循环体中调用了decode()函数并将data0数组中的数据作为decode()函数的传递参数,decode()函数执行完毕后会返回参数对应的ASCII码值,由数据指针data_pointer完成结果的存储。
有关单片机基础及应用的文章
所谓函数的调用就是在一个函数体中引用另外一个已经定义了的函数,前者称为主调用函数,后者称为被调用函数。实际参数的作用是将它的值传递给被调用函数中的形式参数。2)函数表达式。这种在调用一个函数的过程中又调用了另一个函数的方式,称为嵌套函数调用,在输出一个函数的值时经常采用这种方法。例如:其中,函数funtion1(i,j)是作为printf()函数的一个实际参数处理的,它也属于嵌套函数调用方式。......
2023-11-17
所谓的函数调用就是在一个函数体中引用另外一个已经定义的函数,前者为主调函数,后者为被调用函数。这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须是有返回值。因此在以后各主调函数中不用对ann和circle函数说明,可直接调用。......
2023-11-04
图5-7变量的存储种类图函数变量按其有效作用范围可以划分为局部变量和全局变量,还可以按变量的存储方式为其划分存储种类。按照默认规则,在函数体内部或复合语句内部定义的变量,如果省略存储种类说明,该变量即为自动变量。另一方面,Cx51编译器能够识别程序中使用频率最高的变量,在可能的情况下,即使程序中并未将该变量定义为寄存器变量,编译器也会自动将其作为寄存器变量来处理。......
2023-11-17
8051有5个中断源,即两个外部中断、两个定时/计数器中断和一个串行发送/接收中断。1.外部中断外部中断是由连接到单片机外部引脚信号变化而引起的中断,反映外部某一事件的发生。CPU是在每个机器周期的S5P2检测P 3.2和P 3.3上的信号,如果是有效信号则对定时器控制寄存器TCON中的IE0或IE1置1,建立中断请求标志。表6-1中断源的主要内容及说明......
2023-11-17
当一个实际的函数调用,它既可以和一个重载函数相匹配或是参数转换后与某一重载函数相匹配,又可以与某一模板函数相匹配,这并不会产生二义性。只是调用哪一个需按照一定的规则安排先后次序。在失败后,寻找一个函数模板,使其实例化,产生一个匹配的模板函数,若找到了,就调用它。......
2023-11-07
析构函数被系统自动调用分两种情况。分析以下程序的执行结果。解:本程序执行结果如下:调用带参构造函数矩形s1的面积=153调用无参构造函数矩形s2的面积=0调用了析构函数!......
2023-11-07
在某些问题中,可以用调用函数自身的方式来解决问题。在一个函数中直接或间接地调用该函数自身的方式称做函数的递归调用。递归的概念在我们的自然生活中并不陌生。讲的故事又是其自身,这就相当于递归。这也是递归的例子。在数学中,更是有许多函数采用递归的定义形式。=3628800函数fact()包含了对其自身的调用,因此fact()是一个递归函数。来看一看这个递归函数的执行过程。图5.6递归求解3!......
2023-11-18
一个函数直接或间接地调用自己,称为函数的递归调用。所以函数递归调用的实现必须依靠系统提供一个特殊部件(堆栈)存放未完成的操作,以保证当递归调用结束回溯时不会丢失任何应该执行而没有执行的操作。为了理解函数递归调用的特性,参照例5.9的程序讨论函数递归调用的执行过程,为了讨论方便为程序加上行号。函数递归调用示例。......
2023-11-20
相关推荐