函数的定义声明 用法 形参实参 return关键字
2016-08-02 22:58
190 查看
day08 函数
什么是函数 :函数就是一段特殊功能的代码函数 定义 的语法
函数必须写在main函数的外面
格式
eg:
数据类型 函数名称(参数列表) { 函数体; } eg: void showLogo() { printf("这里面的叫函数体"); }
函数调用的语法
showLogo(); 这个写在main函数里面 就可以调用函数
函数的使用
* 什么时候使用函数
* 当有一段代码需要重用的时候 那么可以将这些代码封装到一个函数中什么时候想要用的时候,什么时候就可以直接调用
* 使用函数的好处
* 减少代码的冗余
* 修改维护方便
* 屏蔽代码的现实,我们只需要知道函数的功能,而不需要关心怎么实现
局部变量和全局变量的异同点
变量: 在内存中用来存储数据开辟的那块空间局部变量: 定义在函数或者代码块内部的变量
全局变量: 定义在所有函数和代码块外部的变量
全局变量和局部变量的异同点
相同点
都是内存中的若干干字节,用来存储数据的
不同点
定义的位置不同
作用域不同(有效范围)
局部变量 : 在定义局部比那辆的代码块中有效
全局变量 : 从全局变量定一的那一行来时直到程序结束
声明周期不同
局部变量:
只有CPU执行到该行代码的时候 才会被创建 代码块或者函数执行完毕后就会回收
全局变量 :
只要程序一启动 那么全局变量就会被创建整个程序停止之后 全局变量才会被回收
默认值不相同
局部变量: 如果没有赋值,那么系统会给他一个垃圾值
全局变量: 一般来说 全局变量 如果没有赋值 那么他的值 是 0
不同类型的初始值问题
类型 | 初始值 |
---|---|
int | 0 |
float | 0.0f |
double | 0.0 |
char | ‘\0’ |
思考:如何计算一个函数在程序中调用了多少次
int count = 0;//这里可以定义count 用来记录函数执行的次数 void test() { // int count = 0; //此处定义count不能在这,因为在这里定义的count是局部变量,函数执行完了之后会被回收 count++: printf("test函数被调用了!\n"); } int main() { for (int i = 0; i < 5; i++) { test(); } int num = 0; printf("请输入一个数:\n"); scanf("%d",&num); if(num % 2 == 0){ test(); } }
什么时候使用全局变量
函数需要被所有函数访问的时候
* 主调函数与被调函数*
main函数调用者: 是系统自动调用的,而且我们程序员不能主动调用 main函数中 调用了A();函数,而在A函数中又调用了B函数 那么A函数的调用者 是A函数 北调用的函数 我们成为:被调函数 调用别的函数的函数 我们称为:主调函数
函数什么时候需要参数
当某个函数完成一个特定的功能,但是需要一些奇特数据的时候 比如: 一个函数 他的功能 是判断一个整数 是否是偶数但是北调函数并不知道这个数 主调函数直到,只有通过函数的参数传递给北调函数
形参和实参
形参 :声明在函数定义中的小括弧里面的参数
实参: 调用函数的时候的传递的值
void printOneNumber(int num){//这里的num就是形式参数 printf("num = %d\n",num); } int main() { printOneNumber(50);//这里的50就是实际参数 } "注意 实际参数的类型 一定 要和 形式参数的类型保持一致
如何定义一个带参数的函数
函数类型 函数名称(数据类型 变量名) { // 函数体; } 调用函数: 函数名称(实际参数的值; 实际参数的类型 一定要和 形式参数保持一致
函数调用执行步骤
加载函数
如果函数有参数,声明函数的参数(在内存中开辟空间)
将参数的值 copy给形参
执行函数的函数体
函数体执行完毕之后 回到驻地啊函数 接着向下执行
* 参数可以实现的效果*
参数的最大值的作用:
把主调函数中的数据传递给被调函数
实际参数可以使是常量 也可以是变量,还可以是表达式
实参 传递数据给形参的过程是一个赋值的过程(copy的过程)
结论: 在函数内部 是不能通过传递进来的变量 来改变主掉函数中变量的值
函数什么时候需要带参数
函数:完成特定功能的代码块 当一个函数要完成一个特定功能时 发现需要一个数据 但是函数内部 并不知道这个数是多少的时候需要主调函数传递过来 那么这时候这个被调函数就需要有一个参数, 接收主调函数传递过来的数据
return关键字
**return关键字使用在函数题之中它的作用:
*在函数体中的return关键字 表示”立即结束“这个函数的执行,
所以说return的作用就是 提前结束这个函数
函数中 如果有需要返回的计算结果 那么这个函数需要一个返回值
目的是把函数中计算后的结果传递给调用者
确定 返回的数据 是什么类型的
修改函数的返回值类型 和 你要返回的数据类型一致
在函数中用 return 关键字返回数据
int getSum(int num1,int num2) { int sum = num1 + num2; // printf("sum = %d\n",sum); return sum; } int main()//主调函数 { int result = getSum(10,20); printf("result = %d\n",result); }
**主调函数在接受返回值是 定义一个和被调函数数据返回值类型相同的变量接收即可
使用带返回值的函数注意细节
返回值的类型 要与接收数据变量的类型相同void 表示没有任何返回值不需要接收
return的使用不管在有返回值还是诶呦返回值的函数中,都表示”结束“这个函数
在屋返回值的函数中,直接用 也可以不用
在又返回值得函数中,必须使用return数据
一旦函数定义了返回值,那么就必须在函数结束前有返回值
一旦定义了返回值 就要保证每一个分之结束之前必须有返回值
报错: Control may reach end of non-void function
这个错误表示 你可能在某种情况下没有返回值
上期答案时间到:
跟大家分享一道今天在网上看到的面试题int main() { for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { //这里写一段代码,结束外层循环 i = 10; break; // 答案在这里 这里 } } return 0; }
相关文章推荐
- 类中函数定义和声明时关键字用法
- 变量的声明与定义以及关键字extern的用法
- 变量的声明与定义以及关键字extern的用法
- 变量的声明与定义以及关键字extern的用法
- 变量的声明与定义以及关键字extern的用法
- 变量的声明与定义以及关键字extern的用法
- C-变量的声明与定义以及关键字extern的用法
- 变量的声明与定义以及关键字extern的用法
- 5章1节函数的声明定义用法
- 函数定义与声明
- explicit 关键字用于声明必须使用强制转换来调用的用户定义的类型转换运算符
- JavaScript基础:JS函数中声明的所有变量在整个函数中都是有定义的
- Dephi 函数中的 InLine 关键字用法
- 注意函数/变量的声明与定义
- c#.net环境函数的参数数组的用法(关键字params)
- 一道关于函数声明与对象定义的笔试题
- 虚拟函数:在基类中被声明为virtual,而在派生类中又重新定义了这个函数
- c++声明/定义,静态/非静态,变量/函数
- 变量,函数,类的声明,定义,实现的学习总结(不断增加中)
- 函数的声明和定义