main函数与库函数
C语言程序中main函数不可缺少,如图
#include<stdio.h>
int main(void)
{
/*······*/
return 0;
}
程序运行的时候,会执行main函数的主体部分。main函数使用的printf scanf puts等函数,是由c语言提供的函数,称为库函数。
函数创建(函数定义)
函数定义由函数头和函数体组成
函数头部分表示函数的名称和格式。包括了函数的返回类型即返回值的类型,函数名和形参声明,函数名后括号里的部分,是形式参数的声明。
/*函数定义*/
int max(int a,int b)/*返回类型为int型,函数名为max,形参类型为int,接受多个形参时用逗
{ 号分隔*/
if(a>b)
return a;
else /*函数体*/
return b;
}
函数体是复合语句。仅在某个函数中使用的变量,应在函数中声明和使用,但不能声明和形参同名的变量,避免发生变量名冲突的错误。
函数调用
函数调用时使用函数名
#include<stdio.h>
int max(int a,int b)
{
if(a>b)
return a; /*函数定义*/
else
return b;
}
int main()
{
int m,n;
printf("输入两个整数:");
scanf("%d %d",&m,&n);
printf("较大的数是%d\n",max(m,n));/*函数调用*/
return 0;
}
函数调用的形式是在函数名后加上小括号,这个小括号称为函数调用运算符,括起来的是实参,被调用的函数会生成用于形参的变量,并赋予其实参的值。进而执行函数体,在遇到return语句或大括号后,将返回原来被调用的地方,继续执行main函数。
没有返回值的函数
有的函数只是用来void没有需要返回的结果。这种没有返回值的类型,要声明为void。(void 函数名(形参声明) int main(void))
函数不接受形参时(函数名后括号内为void),调用方也不用赋予实参(函数调用运算符内是空的)
作用域
在函数中声明的变量的名称,只在该函数中通用而在其他区域无效。这样的作用域称为块作用域
在函数外声明的变量标识符,从声明的位置开始到程序的结尾都是通用的。称为文件作用域。
包含库函数的函数原型声明的<stdio.h>称为头文件,取得头文件内容的#include指令称为文件包含指令。
存储期
存储期也就是变量的生存期 存储类说明符static
自动存储期
在函数中不使用存储类说明符static而定义出的对象,被赋予了自动存储期。程序执行到对象声明地时候创建出相应的对象,而执行到程序块的结尾时对象就会消失。如果不对其进行显式的初始化,则会被初始化为不确定的值。
静态存储期
在函数中使用static定义出来的对象,或者在函数外声明定义出来的对象都被赋予静态存储期。在程序开始执行的时候被创建,在程序结束时消失。不进行显式的初始化,会自动初始化为0.