参考:C语言-函数-日记
作者:9art0
发布时间:2020-08-31 00:57:06
网址:https://blog.csdn.net/GatoWong/article/details/108314011?spm=1001.2014.3001.5501
C语言-函数-日记
- 2.1.函数概述一
- 2.2.函数概述二
- 2.3.函数无返回参数,无返回值带一个参数
- 2.4.函数形式参数作用域及生存期
- 2.5.函数形式参数和局部变量的异同点
- 2.6.有一个参数有返回值的函数
- 2.7.有两个参数的函数,实现加法运算
- 2.8.实现两数据加减乘除
- 2.9.两数加减乘除,可选算法
- 2.10.前面的大综合,小计算器
- 2.11.函数总结
2.1.函数概述一
拿约会步骤举例:出门前准备——在路上——见面——回家
#include <stdio.h>
#include <stdlib.h>int prepare(){ //没有形式参数printf("精致打扮\n"); //printf是系统做好的函数,可直接调用return 0; //int的返回值0
}int ontheroad(){printf("饭店等她\n");return 0;
}int dating(){printf("你好漂亮\n");return 0;
}int gobackhome(int mark){//函数定义的时候,返回值、形参的类型都要规定好printf("我能送你回家吗?\n");if(mark==0){printf("不可以\n");} else printf("可以!\n");return 0;
}//将要做的事全部打包进各个行程int main()
{prepare();ontheroad();dating();gobackhome(0);
//该做什么事就把技能包拿出来system("pause"); return 0;
}
2.2.函数概述二
为什么要函数调用?
1、代码很好看
2、容易定位问题
3、可复用性强(每一次调用都是复用)
4、分工
2.3.函数无返回参数,无返回值带一个参数
本节涉及术语:
1、定义在函数内部的变量称为局部变量(Local Variable),它的作用域仅限于函数内部, 离开该函数后就是无效的,再使用就会报错。
2、在所有函数外部定义的变量称为全局变量(Global Variable),它的作用域默认是整个程序,也就是所有的源文件,包括 .c 和 .h 文件。
3、形式参数:形参是函数被调用时用于接收实参值的变量。
4、实际参数:实参是在函数调用时传递给函数的参数。
这节是老陈前辈说的一个买米的故事
#include <stdio.h>
#include <stdlib.h>int all; //全局变量:作用范围在整份代码//你爸让你去买米,不关心你买多少斤(参数),也不关心你买回来没(返回值)
void buyrice1() //void代表无返回值,不需要return//void代表返回值的类型是无类型,return可以写,不过后面不加变量
{printf("去买米");
}//你爸让你去买米,告诉你买多少斤(参数),但也关心你买回来没(返回值)
//经验:如果错误提示中包含\243 \254的错误,说明你输入了中文符号 void buyrice2(int jinshu) //jinshu是形式参数变量的定义,所以写法也类似:如int a
{printf("去买%d斤米",jinshu);
}void printfwelcome()
{printf("欢迎!\n");printf("欢迎!\n");printf("欢迎!\n");
}int main()
{int a=6;int b=8;printfwelcome();buyrice1(a);//这两句a和b都是实际参数buyrice2(b);return 0;
}
下面的延时函数也是如此
#include <stdio.h>
#include <stdlib.h>//调用延时函数也是一样的,void delay1(int a) //括号里的a是形式参数
{int i;for(i=0;i<a;i++);
}/*void delay2()
{int i; //局部变量:只作用在本函数语句块for(i=0;i<5000;i++);
}*/int main()
{int b;scanf("%d",&b);while(1){printf("我是最棒的!");delay1(b);//这里b是实参
}return 0;
}
2.4.函数形式参数作用域及生存期
1.形参的作用域:仅作用于该函数
2.形参的生存期:何时出生,何时死亡
#include <stdio.h>
#include <stdlib.h>//1.形式参数的作用域:仅作用于该函数
//2.形式参数的生存期:形式参数也是一个变量(局部变量),有自己的内存空间
/* 出生:何时申请了该空间:当函数被调用的时候,才申请了该内存空间这个空间内的数据被赋值成实际参数的值,函数调用把实际参数的值拷贝一份给形式参数。“去世”:何时释放了该空间:函数执行结束后,该空间由内存管理单元自动回收(释放)。 */void buyrice2(int a){printf("去买%d斤米...\n",a);printf("buy:a的地址是%p\n",&a);a++;printf("jinshu=%d\n",a);
}int main()
{int a=30;buyrice2(a);printf("main:a=%d\n",a);printf("main:a的地址是%p\n",&a);system("pause");return 0;
}
2.5.函数形式参数和局部变量的异同点
形式参数更灵活。