目录
什么是函数
我们举个例子,你现在是老板你要求你的秘书去完成一项任务你可以给他说让他去做某一项任务,也可以不给他说让他去做某一项任务(暗示他)当然你得是老板。只要你是老板你就可以无限次的让秘书去做某一项任务,并且他没有怨言。
我们看一下函数的文字定义:
函数是一段可以重复使用的代码,用来独立地完成某个功能,它可以接收用户传递的数据,也可以不接收。接收用户数据的函数在定义时要指明参数,不接收用户数据的不需要指明,根据这一点可以将函数分为有参函数和无参函数。
函数的定义
函数定义的格式:
返回值类型 函数名 (参数,参数,……)
{
执行语句
}
#include<stdio.h> void fun (){ printf("HelloWold"); } int main(){ fun(); return 0; }
注意:
1.函数应该先定义后使用
2.C源程序开始于主函数,结束于主函数。(主函数就是main函数)
3.实参负责传递,形参负责接受,函数调用时将实参赋予给对应的形参
实参也就是实际参数,形参也就是形式参数。
实际参数在主函数中,进入调用的函数就不可以使用了。就需要传递形参了,形参数的作用域是被调用的这个函数内,出了这个函数便不起作用了。形式参数无法改变实际参数的值。
注意:函数可以嵌套调用,但是不可以嵌套调用
函数的声明
函数应先定义后调用,如果函数的调用出现在定义之前,则要对函数进行声明。
#include<stdio.h> void fun();//函数的声明 int main(){ fun(); return 0; } void fun (){ printf("HelloWold"); }
函数的返回值
有返回值
形式1 : return(表达式)
#include<stdio.h> int fun();//函数的声明 int main(){ printf("%d",fun()) ; return 0; } int fun (){ return (1+2); }
形式2 :return 表达式;
#include<stdio.h> int fun();//函数的声明 int main(){ printf("%d",fun()) ; return 0; } int fun (){ return 3+2; }
形式3 :通过return 语句,函数只能返回一个值
#include<stdio.h> int fun();//函数的声明 int main(){ printf("%d",fun()) ; return 0; } int fun (){ return 10; }
默认返回值类型是int类型
无返回值 void
#include<stdio.h> void fun();//函数的声明 int main(){ fun(); return 0; } void fun (){ printf("HelloWold"); }
注意
void定义的函数体内不能有return语句
void定义的函数不能拿来给变量赋值
返回值指return后边的值
函数的参数
函数的分类:
形参:定义函数时的形参
实参:调用函数时的参数
参数的传递
- 实参单向传递给形参数
- 实参,形参类型顺序个数一一对应
- 形参定义时不占用空间,调用时系统分配空间
函数的调用
函数的调用格式
1.语句调用
Fun(x,y);
2.表达式调用
A=fun(x,y);
参数调用
将函数的返回值作为实参进行调用,称为函数的参数调用
#include<stdio.h> int fun (int x,int y){ return y-x; } int main(){ int a=10,b=5; printf("%d",fun(a,fun(a,b))) ; return 0; }
递归调用
递归条件:
1.函数主要的功能
2.明确的结束条件
3.找出函数的等价关系式
#include<stdio.h> int fun (int x){ if(x==1){//结束条件 return 1; } return x+fun(x-1); //函数关系 } int main(){ printf("%d",fun(10)); }
函数的值传递
函数的参数传递分为地址传递(指针会说到)和值传递
注意:
实参的类型可以与实参类型不一致,以形参类型为准
实参与形参各占不用的存储单元
形参需单独定义,属于临时变量,调用时为其分配存储单元,函数调用结束后释放其存储单元。
函数默认的类型为int型,可省略。
函数返回值的类型是由定义函数时的返回值类型决定的。
🌷给小伙伴们推荐个学习、刷题的网站?
🍓🍓各种面试题应有尽有,刷题刷到你手软!
🥂🥂🥂各种互联网学习资料,各个大厂面试真题从零基础开始学习,帮你轻松应对各类面试题目,快来充实一下自己吧!