1、函数的基本概念
//自定义的函数放在 main() 函数前面,表示函数的定义、也相当于声明了
void printhello() //自定义的函数(自己写的函数)void 表示函数没有返回值
{
printf("hello,how are you\n");
//这里可以不写:return;
}
int main() // 这个是主函数,是用于系统调用的
{
printfhello(); //使用这个函数的时候必须先声明 ,如果没有声明main()函数就找不到这个自定义的函数
}
a、一个文件里有
一个或者多个函数组成,这个文件我们一般就称为
源程序文件
b、大项目不能源程序都放一个文件里,所以一个C项目是由一个或者多个源程序文件组成。
这些函数可以分别放到这些源程序文件里面并被所有的源程序文件
公用
c、C程序是从main() 函数开始执行,最总也是在main()函数中结束整个程序的运行。
d、函数不能嵌套使用,但是可以
互相调用
;
特别注意
:不要手工去调用 main() 函数,这个函数是系统调用的,自己调用可能会出错。
e、
函数分类
:
(1)、
库函数:比如printf(); ,直接使用,不需要我们自己定义。strcpy,strcmp,strlen
(2)、
自定义函数:比如上面的printfhello(),是我们自己写的函数,所以称为自定义函数,用于解决我们自己的需求。
2、函数的定义和函数返回值
函数的定义和返回值:
函数参数:所谓的函数参数就是
调用函数的时候,希望把一些数据传递给该函数,这个时候,该函数就需要用一些变量来接收这些数据,这些接收数据的变量,就叫做函数参数(形式参数)。
函数定义的一般形式: //记住这个概念,函数里面的参数叫做
形式参数,简称:
形参。
返回类型 函数名(形式参数)
{
语句(函数体)
return 返回值;
}
a)、无返回类型,无形参 void printhello() {.......} ,没有返回类型的函数,返回类型这里必须写成 void
b)、有参数,有返回类型
int addtwoshu(int a, int b)
{
int sum=a+b;
return sum; // 用 return 返回值给
调用者,一般来说调用者会
用赋值语句
来接收
该值
[简单来说,return 的作用就是:把函数执行最后的结果返回给这个
调用者]
}
int main()
{
int result =addtwoshu(3,4); // 在主函数里面调用这个函数,
3,4表示实际参数,简称:
实参
printf("result= %d \n",result); //输出的结果为:7
}
// a,b 就叫
形式参数,有多个形式参数的时候就用
逗号隔开,形式参数的目的表示有数据要传递到本 函数来,用这些参数接收这些传递来的数据。
说明:
//1、函数定义的第一行
不能有分号
//2、
形式参数在函数调用之前并不分配内存,调用的时候分配内存,函数调用结束后,形式参数的内存就被释放了,所以
形式参数
只能在
函数内部使用。
//3、
实际参数可以是常量、变量、表达式;
result = addtwoshu(1+2,2+2);
int i = 3,j = 4;
result = addtwoshu(i,j);
//4、函数调用的时候,
实际参数的值
自动赋值给了
形式参数,如果实际参数和形式参数为数组名(数组名代表的是数组首地址), 则传递进去的是数组首地址而不是变量值。
形式参数的数量和类型 必须 与 实际参数的数量和类型 保持一致。
//5、C语言规定,实际参数变量的数据传递是“值传递”,也就是单向传递,
只能由
实际参数
传递给
形式参数,不能由形式参数 传递给实际参数。
//6、如果你
实际返回的类型 和
函数定义的返回类型
不同时,则系统会
自动转成
函数返回类型。
int testf()
{
return 3.45F; //会自动转换成 int 型 -3
}