函数

来源:互联网 发布:c 编程书籍推荐 编辑:程序博客网 时间:2024/06/05 16:01

1、函数的定义

(1)形式:函数=函数头+函数体

返回值类型  函数名(参数列表)                         //函数头 注意:参数可有可无

{

    函数体(函数实现特定功能的过程);

}

注:当函数无任何内容时,被称为空函数

形式如下:

类型说明符 函数名()

{

}

目的:“占位”,只是现在还没有想好怎么编写,先利用它来占位,以后完成。


2、函数的声明

在程序编写过程中,要先对函数进行声明,再对函数进行定义。函数声明是让编译器知道函数的名称、参数、返回值类型等信息。而函数定义就是让编译器知道函数的功能。

形式如下:

返回值类型 函数名(参数列表);

注:如果将函数的定义放在调用函数之前,就不需要进行函数的声明,此时函数的定义已经包含了函数的声明。


3、返回语句

作用1:利用返回语句能立即从所在的函数中退出,即返回到调用的程序中去。

作用2:返回值,将函数值赋值给调用的表达式中;

注意:函数定义的返回值类型决定最终返回值的类型。


4、函数参数:传递数据给函数使用,函数利用接收到的数据进行具体的操作处理。

(1)形式参数:指形式上存在的参数。在定义函数时,函数后面括号中的变量名称为“形式参数”。在函数调用前,传递给函数的值将被复制到这些形式参数中;

(2)实际参数:实际存在的参数。在函数被调用时,函数后面括号中的参数为“实际参数”。函数的调用者提供给函数的参数叫做“实际参数” 。实际参数是表达式计算的结果,并且被复制给函数的形式参数。


(3)数组作函数参数:当数组作为函数的实参时,只传递数组的地址,而不是将整个数组赋值到函数中。当用数组名作实参调用时,指向该数组的第一个元素的指针被传递到函数中。

情况一:数组元素作为函数参数:此时与用变量作为函数实参一样,是单向传递。

情况二:数组名作为函数参数:例如,void Display(int iArray[10])注意:其中数组长度10是可以在函数声明和定义时省略的即 void Display(int iArray[])。

情况三:指针作为函数参数:因为数组名作实参时,传递的是数组第一个元素的指针。因此,可以这样声明:void Display(int* iArray);


(4)main函数的参数:

一般忽略不写main函数的参数,其实main的形式参数如下:

main(int argc,char* argv[])

其中,argc参数保存命令行的参数个数,一整型变量;而argv参数十一指向字符指针数组的指针,这个数组的每一个元素都指向命令行实参。每个命令行实参都是字符串。


5、函数的调用

其实函数调用的方式有3种如下:

(1)函数语句调用:例如,Display(); 这种情况下不要求函数带返回值;

(2)函数表达式调用:函数出现在一个表达式中,这时函数必须带回一个确定值。例如,sum=num*Add(3,5);

(3)函数参数调用:函数返回值作为实参传递到函数中使用;例如, res=Add(10,Add(3,5));

(4)C语言中,不允许嵌套定义,但允许嵌套调用··


6、内部函数和外部函数

源文件:函数是C语言程序中最小的单位,往往把一个函数或多个函数保存为一个文件,这个文件被称为“源文件”。

(1)内部函数:只希望该函数只被所在源文件使用。又一名称为“静态函数”

定义内部函数格式如下:

static 返回值类型 函数名(参数列表)

好处:不同的开发者可以分别编写不同的函数,而不必担心所使用的函数是否与其它源文件中的函数同名,因为内部函数只可以在所在的源文件中进行使用,所以即使不同的源文件中有相同的函数名也没有关系。、

(2)外部函数:可以被其他源文件调用的函数。

外部函数格式如下:

extern 返回值类型  函数名(参数列表)

其中,extern关键字是可以省略的,因为一般默认情况下,定义的函数是外部函数


7、局部变量和全局变量

(1)局部变量:函数内部定义的变量。另外,函数的形参也属于局部变量。

(2)全局变量:在所有函数的外部声明的变量。全局变量不属于某个函数,而属于整个源文件,但是如果外部文件要使用,则要用extern关键字进行引用修饰。



0 0
原创粉丝点击