是关于汇编指令的一个小字典,用起来很舒服,对初学者应该有些帮助的
源代码在线查看: codetc37.dat
函数的定义
无参函数的定义形式
{
声明部分
语句
}
有参函数定义的一般形式
类型标识符 函数名(形式参数表列)
{
声明部分
语句
}
例:
int max (int x,int y )
{int z; /*函数体中的声明部分*/
z=x>y?x:y;
return(z);
}
这是一个求x和y二者中大者的函数,第1行第一个关键字int表示函数值是整型的。max为函数名。括号中有两个形式参数x和y,它们都是整 型 的。在调用此函数时,主调函数把实际参数的值传递给被调用的函数中的形式参数x和y。花括弧内是函数体,这包括声明部分和语句部分 。在声明部分定义所用的变量,此外对将要调用的函数作声明。在函数体的语句中求出z的值(为x与y中大者),return(z)的作用昌将z的值作 为函数值带回到主调函数中。return后面的括弧中的值(z)作为函数带回的值(或称函数返回值)。在函数定义时已指定max函数为整型,在函数 体中定义z为整型,二者是一致的,将z作为函数max的值带回调用函数
如果在定义函数时不指定函数类型,系统会隐含指定函数类型为int型。因此上面定义的max函数左端的int可以省写。
可以有"空函数"
它的形式为
类型说明符 函数()
{}
例:
dummy(){}
调用此函数时,什么工作也不做,没有任何实际作用。在主调函数中写上"dummy.();"表明“这里要调用一个函数”,而瑞这个函数没有 起作用,等以后扩充函数功能时补充上。在程序设计中往往根据需要确定若干模块,分别由一些函数来实现。而在第一阶段只设计最基本的模 块,其他一些次要功能或锦上添花的功能则在以后需要时陆续补上。在编写程序的开始阶段,可以在将来准备扩充功能的地方写上一个空函数
(函数名取将来采用的实际函数名(如用merge(),matproduct(),concatenate(),shell()等,分别代表合并,矩阵相乘,字符串连接,希尔法排 序等),只是这些函数未编好,先占一个位置,以后用一个编好的函数代替它。这样做,程序的结构清楚,右读性好,以后扩充新功能方便, 对 程序结构影响不大。空函数在程序设计中常常是有用的。
对形参的声明的传统方式
在老版本c语言中,对形参类型的声明是放在函数定义的第2行,也就是不在第1行的括号内指定形参的类型,而在括号外单独指定,例如 上面定义的max函数可以写成以下形式:
int max (x,y) /*指定形参x,y*/
int x,y; /*对形参指定类型*/
{int z;
z=x>y?x:y;
return(z);
}
一般把这种方式称为传统的对形参的声明方式,而把前面介绍过的方法称为现代的方式,Turbo C和目前使用的多数C版三对这两种方法都 允许使用,两种用溘等价,ANSI新标准推荐前一种方法,即现代方式,。它与PASCAL语言中所用的方法是类似的。本书中的程序采用新标准推 荐的现代方式。但由于有些过去写的书籍和程序使用传统方式,因此读者应对它有所了解,以便能方便地阅读它们。
形式参数和实际参数
在调用函数时,大多数情况下,主调函数和被调用函数之间有数据传递关系。这就是前面提到的有参函数。前面已提到:在定义函数时函
数名后面括弧中的变量名称为"形式参数"(简"实参")。
例: 调用函数时的数据传递。
main()
{int a,b,c;
scanf("%d,%d"&a,&b);
c=max (a,b);
printf ("Max is %d",c);
}
max (int x,int y)
{
int z;
z=x>y?x:y;
return(z);
}
运行情况如下:
7,8
max is 8
程序中第7-12行是一个函数定义(注意第7行的末尾没有分号)。第7行定义了一个函数名max和指定两个形参x,y及其类型。程序第4行
是一个调用函数语句,max后面括弧内的a,b是实参。a和b是main函数中定义的变量,x和y是函数max中的形式参数。通过函数调用,使两个函 数中的数据发生联系。
关于形参与实参的说明:
(1)在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元。只有在发生函数调用时,函数max中的形参才被分配 内存单元。在调用结束后,形参所 占的内存单元也被释放。
(2)实参可以是常量,变量或表达式,如:
max(3,a+b);
但要求它们有确定的值。在调用时将实参的值赋给形参(如果形参数组名,则传递的是数组首地址而不是数组的值。)
(3)在被定义的函数中,必须指定形参的类型
(4)实参与形参的类型应相同或赋值兼容。例中实参和形参都是整型,这是合法的,正确的。如果实参为整型而形参x为实型,或者相反, 则不同类型数值的赋值规则进行转 换。例实参值a为3.5,而形参x为整型,则将实数3.5转换成整数3,然后送到形参b。但此时应将max函数放 在main函数的前面或在main函数中对被调用函数max作原型声 明,否则会出错。字符型与整型可以互相通用。
(5)C语言规定,实参变量对形参变量的数据传递是"值传递",即单向传递,只由实参传给形参,而不能由形参传回来给实参,这是和 FORTRAN不同的。在内存中,实参单元与 形参单元是不同的单元。
在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。因 此,在执行一个被调用函数时,形参的值如果发生改变,并不会改变主调函数的实参的值。例如,若在执行函数过程中x和y的值变为10和15, 而a和b仍为2,3。
|
相关资源 |
|
-
是关于汇编指令的一个小字典,用起来很舒服,对初学者应该有些帮助的
-
基于单片机开发的一个小程序,用汇编编的,波形发生程序.
-
关于人工智能的一个小项目,用CILPS工具写成
-
TXT文件分割器GUI版,哈哈,我闲暇时编的一个小程序,功能还是很好使的
-
用dsp2407控制直流无刷电机的一个小例子。。很实用
-
模拟煺火算法,学人工智能的时候写的一个小程序,准确率还是很高的.
-
用Mvc做的一个小项目.用Mvc做的一个小项目.
用Mvc做的一个小项目.
用Mvc做的一个小项目.
-
51单片机的一个C 语言与启动代码,看对大家有没有帮助
|