一、函数的概述
(1)一个C程序由一个或多个程序模块组成每一个程序模块作为一个源程序文件。对较大的程序,一般不希望把所有内容全放在一个文件中,而是将它们分别放在若干个源文件中,再由若干个源程序文件组成一个C程序。这样便于分别编写、分别编译,提高调试效率。一个源程序文件可以为多个C程序共用。
(2)一个源程序文件由一个或多个函数以及其他有关内容(如命令行、数据定义等)组成。一个源程序文件是一个编译单位,在程序编译时是以源程序文件为单位进行编译的,而不是以函数为单位进行编译的。
(3)C程序的执行是从main函数开始的,如是在main函数中调用其他函数,在调用后流程返回到 main函数,在main 函数中结束整个程序的运行。 (4)所有函数都是平行的,即在定义函数时是分别进行的,是互相独立的。一个函数并不从属于另一个函数,即函数不能嵌套定义。函数间可以互相调用,但不能调用 main函数。main函数是系统调用的。
函数内部不允许在内部定义函数
(5) 从用户使用的角度有两种函数
1、标准函数。标准函数即库函数,它是由系统提供的,用户不必自己定义而直接使用它们。
2、用户自己 定义的函数。
(6)函数的形式来看
1、有参
- 函数的返回值,类型标识符,说的就是运行结果的类型。是函数运行之后运行的结果。
- 函数名 就是符号标识符定义,不要和库函数相同。
2、无参
二、形参与实参的说明
(1)在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元。只有在发生函数调用时,函数max中的形参才被分配内存单元。在调用结束后,形参所占的内存单元也被释放
(2)实参可以是常量、变量或表达式
(3)在被定义的函数中,必须独立指定形参的类型
(4)实参与形参的类型应相同或赋值兼容。
(5)在C语言中,实参向形参的数据传递是“值传递”,单向传递,只由实参传给形参,而不能由形参传回来给实参。
三、函数的定义以及声明
函数定义以及声明一般形式
四、函数调用
函数名(实参列表);
常见调用方式
1.函数语句
把函数调用作为一个语句。如“printstar();”,这时不要求函数带回值只要求函数完成一定的操作。
2.函数表达式
函数出现在一个表达式中,这种表达式称为函数表达式。这时要求函数带回一个确定的值以参加表 达式的运算。例如:c=2* max(a,b);函数 max是表达式的一部分,它的值乘2再赋给c。
3.函数参数
函数调用作为一个函数的实参。例如:m=max(a,max(b,c));其中 max(b,c)是一次函数调用,它的值作为 max另一次调用的实参。m 的值是 a、b、c三者中的最大者。
注意
- 函数调用表达式,他的返回值类型与函数返回值类型一致
- 形参和实参必须个数相同,类型匹配
- 实参可以是左值,也可以是右值
常见错误以及注意点
- 注意函数的括号不能省略
- 去掉函数的括号,实际上是函数的指针,即函数的地址
- 谁调用谁,谁就是主调函数
- 谁被调用的,称为被调函数
- 注意,被调函数要出现在主调函数之前(最近)
- 函数返回值,最好与返回值类型一致,要不然会造成截断
- 函数体里面如果没有写放回值,那么其结果不确定。
注意
- void 类型可以写也可以不写
- 遇到return语句会终止正在执行的函数,返回到主调函数调用处
- c 语言对于没有写返回值类型的,默认返回值类型为void 。要是主函数里面没有写return,c操作系统可能认为程序异常
- 注意 return的返回类型要和函数返回值类型一致