C语言函数调用:主调函数与被调函数的关系

需积分: 40 0 下载量 106 浏览量 更新于2024-08-22 收藏 670KB PPT 举报
"本课程主要关注C语言中的函数使用,特别是关于函数的定义、调用、参数传递以及数组作为函数参数的应用。同时,讲解了变量的作用域、存储类型和函数的存储分类。" 在C语言中,函数是实现模块化编程的重要工具。一个C程序通常由一个主函数(main函数)和若干子函数组成。主函数负责调用其他子函数,执行程序的主要任务。函数定义可以位于主调函数之前或之后,只要在调用前完成定义,程序就能正确编译和执行。 例如,描述中给出的`add`函数定义如下: ```c float add(float x, float y) { float z; z = x + y; return z; } ``` 这是一个接受两个浮点数参数`x`和`y`,计算它们的和,并返回结果的函数。在主函数`main`中,我们可以这样调用它: ```c int main() { float a, b; scanf("%f, %f", &a, &b); printf("sum is %f", add(a, b)); return 0; } ``` 函数调用时,实际的参数(实参)`a`和`b`传递给函数的形参`x`和`y`,函数执行完毕后,返回的结果通过`return`语句赋值给`printf`函数的格式化字符串中的 `%f`。 本章的教学重点在于理解和掌握函数的定义和调用方式,以及函数参数的传递方式。函数参数传递有传值和传址两种方式,其中传值是将实参的副本传递给形参,而传址则是传递实参的内存地址,形参直接操作实参的内存。 变量的作用域指的是变量在程序中的可见范围。局部变量仅在定义它的函数内部可见,而全局变量在整个源文件或多个源文件中都可访问。存储类型包括自动变量(栈上的变量)、静态变量(内存分配一次,生命周期贯穿整个程序)和外部变量(全局变量,可以在不同函数之间共享)。 此外,函数的存储分类涉及静态存储和动态存储。静态存储的函数在程序加载时分配内存,而动态存储的函数在函数调用时分配内存。数组作为函数参数是C语言中的一个重要特性,允许将整个数组传递给函数,实际上传递的是数组的首地址。 教学难点在于理解函数的参数调用,特别是对于数组和指针的处理,以及变量的作用域和生存期。理解这些概念对于编写高效且易于维护的C程序至关重要。通过学习,学生应能够熟练运用函数实现复杂任务,合理设计程序结构,有效利用函数的复用性。