C语言里可以采用分组的方式管理语句每个语句分组叫做一个函数多函数程序执行的时候时间分配情况必须 遵守以下规则1.整个程序的执行时间被划分成几段,每段 时间都被分配给一个函数使用2.不同时间段不能互相重叠并且所有时间段 必须连续3.如果函数A在工作的时候把一段时间分配给 函数B使用则函数B结束所有工作之后必须 把后面的时间还给函数A如果函数A在工作的时候把时间分配给函数B 使用则它们之间存在函数调用关系在函数调用关系中函数A叫做调用函数,函数B 叫做被调用函数函数调用关系只在被调用函数工作的时间 范围内才存在函数调用语句可以产生函数调用关系,可以 把一个函数的执行时间分配给别的函数不可以跨函数使用变量不同函数里的变量可以重名如果函数多次运行则它里面的变量每次 对应的存储区都可能不同声明变量的时候可以使用volatile关键字, 这种变量对应的存储区可以被多个 程序同时使用函数调用过程中通常伴随着两个函数之间 的数据传递函数调用过程中数据传递存在两个完全相反 的方向,可以从调用函数传递给被调用 函数也可以从被调用函数传递给调用函数任何方向的数据传递都要使用被调用函数提供 的存储区只能从被调用函数向调用函数传递一个数据这个数据叫做被调用函数的返回值只能在被调用函数结束的时候传递返回值传递返回值的时候需要把它记录到被调用函数 提供的一个存储区里,这个存储区的类型 名称应该写在函数名称前被调用函数里使用return关键字可以把返回值 记录到这个存储区里调用函数把函数调用语句当作数字使用就可以 得到函数的返回值如果被调用函数没有使用return关键字向存储区 里放返回值则存储区里的内容是随机的调用函数只有一次获得返回值的机会,得到 返回值以后或者立刻使用或者另外存储 到其它存储区如果函数没有返回值就应该在函数名称前 写void如果函数名称前什么都不写在C89规范里表示 函数提供一个整数类型存储区用来存放 返回值,在C99规范里不允许这样被调用函数不可以用数组存放返回值函数调用过程中可以从调用函数向被调用函数 传递多个数据,这些数据的类型可以不同被调用函数需要为每个传递过来的数据提供一个 对应的存储区可以使用被调用函数提供的一组变量表示 这些存储区,这些变量必须声明在 函数名称后面的小括号里这些变量叫做函数的形式参数,小括号里的 所有内容叫做函数的形式参数列表每个形式参数的类型名称都不可以省略相邻形式参数声明之间用逗号分开被调用函数里可以象使用普通变量一样使用 形式参数函数调用语句的小括号里需要为每个形式参数 提供一个对应的数字,相邻数字之间用逗号 分隔这些数字叫做实际参数函数调用的时候计算机把每个实际参数存放在 对应的形式参数里,被调用函数里可以 通过形式参数得到实际参数的数值只要能当作数字使用的内容都可以作为实际参数 使用如果函数没有形式参数就应该在小括号里写void编写函数时如果小括号里什么都没写表示函数 可以提供任意多个形式参数,这些形式参数 的类型可以不同