c语言从头开始(六:函数)
函数就是一组一起执行的语句,每个c程序至少有一个函数,也就是main()函数。理论上来讲,我们把所有的程序代码都写在主函数里是没有问题的。但是这会使主函数变得庞杂、头绪不清,使得阅读和维护程序变得困难。函数可以解决这些问题,而且,函数可以减少我们重复编写同样功能的代码。
C 标准库提供了大量的程序可以调用的内置函数。此外,我们可以根据需要,定义其他额外的函数。
定义函数:
C 语言中的函数定义的一般形式如下:
return_type function_name( parameter list )
{
body of the function
}
函数的所有组成部分:
1.返回类型:一个函数可以返回一个值。return_type 是函数返回的值的数据类型。有些函数执行所需的操作而不返回值,在这种情况下,return_type 是关键字 void。
2.函数名称:这是函数的实际名称。函数名和参数列表一起构成了函数签名。
3.参数:参数就像是占位符。当函数被调用时,您向参数传递一个值,这个值被称为实际参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可能不包含参数。
4.函数主体:函数主体包含一组定义函数执行任务的语句。
简单例子:
int sum(int num1,int num2) //求num1和num2的和
{
int sum; //定义局部变量sum
sum=num1+num2;
return sum;
}
函数声明:
函数声明会告诉编译器函数名称及如何调用函数。函数的实际主体可以单独定义。
函数声明包括以下几个部分:
return_type function_name( parameter list );
像上面定义的sum()函数,声明如下
int sum(int num1,int num2);
当您在一个源文件中定义函数且在另一个文件中调用函数时,函数声明是必需的。在这种情况下,您应该在调用函数的文件顶部声明函数。
调用函数:
#include <stdio.h>
int sum(int num1,int num2);//函数声明
int main()
{ //定义变量
int a=1;
int b=2;
int c;
//函数调用
c=sum(a,b);
//输出
printf("%d",c);
return 0;
}
int sum(int num1,int num2)//函数定义
{
int sum;
sum=num1+num2;
return sum;
}
运行:
函数参数:
如果函数要使用参数,则必须声明接受参数值的变量。这些变量称为函数的形式参数。
形式参数就像函数内的其他局部变量,在进入函数时被创建,退出函数时被销毁。
当调用函数时,有两种向函数传递参数的方式:
传值调用:该方法把参数的实际值复制给函数的形式参数。在这种情况下,修改函数内的形式参数不会影响实际参数。
引用调用:该方法把参数的地址复制给形式参数。在函数内,该地址用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。
默认情况下,C 使用传值调用来传递参数。一般来说,这意味着函数内的代码不能改变用于调用函数的实际参数。