函数:
函数是完成特定工作的独立程序模块,包括库函数和自定义函数两种,计算机在执行程序时,从主函数main函数开始执行,如果遇到某个函数的调用,主函数main被暂停执行,转而执行对应的函数,该函数执行完毕后,将返回主函数main,然后从原先暂停的位置开始执行。
函数的定义:
return_type function_name(param ){
body of the function;
}
函数组要由四部分组成,返回类型,方法名,参数和方法体。
函数的调用:
定义了一个函数之后,就可以在程序中调用这个函数,在调用函数的时候,会 将实参传递给形参,需要注意的是,在调用库函数的时候,需要在程序的最前面用#include命令包含对应的头文件,调用自定义的函数时,程序中必须有与调用函数相对应的函数定义。在函数中,在定义函数时的参数称为形参,在调用函数的时候的参数被称为实参。形参和实参需要一一对应,要求两者的数据量和类型必须保持一致。在C语言中,在参数的传递过程中,将实参的值赋值给形参,这种参数传递是单向的,只允许把实参的值赋值给形参,而形参的值即使在函数中变了,也不会影响实参。
函数的声明:
在C语言中,要求函数先定义后调用,将主函数放到被调函数的后面,就像变量先定义后使用一样,如果自定义函数放到main函数的后面,就需要在函数调用之前,加上函数原型声明。
函数声明的目的主要是说明函数的类型和参数的情况,以保证程序编译时能判断对该函数的调用是否正确。
局部变量和全局变量
局部变量
局部变量是指定义在函数内部的变量,局部变量只能在所在函数中使用,不能在函数之外使用。
全局变量
定义在所有函数之外的变量称为全局变量。
变量说明:
就一般程序而言,计算机都是从main函数开始执行的,使得main函数中所有的局部变量在一开始就在内存数据区中分配了存储单元,而其他函数在被调用之前,其被调函数中定义的局部边变量并未被分配存储空间,只有当该函数被调用时,其形参和局部变量才被分配对应的存储工具,函数调用结束返回主函数,在被调用函数中所有的形参和局部变量将不复从在,相应的存储单元被系统收回,根据这种特性,把局部变量称为自动变量,即函数被调用时,系统自动为局部变量分配存储空间,一旦函数调用结束,所有分配给局部变量的单元由系统收回。
变量从定义开始分配存储空间到运行结束存储空间被收回,整个过程被称为变量的生命周期。
对于全局变量,由于它和具体函数无关,从程序执行的开始到整个程序的结束,全局变量都是有效的,对应的存储单元始终保持,为了与自动变量加以区别,C语言的数据区进一步分成动态存储和静态存储,他们的管理方式完全不通,动态存储区是使用堆栈来管理的,为函数动态分配和回收存储单元,而静态存储区相对固定,管理较简单,他用于存放全局变量和静态变量。静态局部变量存放在静态存储区,他不会像普通局部变量那样因为函数调用结束而被收回,他的生命周期会持续到程序结束,一旦含有静态局部变量的函数被再次调用,则上一次函数调用后留在静态局部变量上的值仍然保存着,可供本次调用继续使用。
需要说明的是:自动变量如果没有赋初始值,其存储单元中将是随机值,而静态变量而言,如果定义时没有初始值,系统将自动赋0,