1207.1——C语言 函数
函数可以分为无参函数和有参函数。
无参函数的定义
无参函数定义的一般形式如下:
返回值类型 函数名(){
函数体
}
说明:
- 返回值类型可以是C语言中的任意数据类型。
- 函数名是标识符的一种,命名规则和标识符相同。函数名后面的括号
( )
不能少。 - 函数体是函数需要执行的代码。即使只有一个语句,也要由
{ }
包围。 - 在函数体中使用return语句返回数据。
例如,定义一个函数,计算1加到100的结果:
int sum(){
int i, sum=0;
for(i=1; i<=100; i++){
sum+=i;
}
return sum;
}
计算结果保存在变量sum
中,通过return
语句返回。sum为int
型,所以返回值类型也必须为int
,要一一对应。
return
是C语言中的一个关键字,只能用在函数中,用来返回处理结果。
将上面的代码补充完整:
#include <stdio.h> int sum(){
int i, sum=0;
for(i=1; i<=100; i++){
sum+=i;
}
return sum;
} int main()
{
int a = sum();
printf("The sum is %d\n", a);
return 0;
}
运行结果:
The sum is 5050
函数不能嵌套定义,main 也是一个函数定义,要将 sum 放在 main 外面。函数必须先定义后使用,所以 sum 只能在 main 前面。
注意:main 是函数定义,不是函数调用。当可执行文件加载到内存后,系统从 main 函数开始执行,也就是说,系统会调用我们定义的 main 函数。
无返回值函数
有的函数不需要有返回值,或者返回值类型不确定(很少见),那么用void表示,例如:
void hello(){
printf ("Hello,world \n");
//没有返回值就不需要 return 语句
}
void
是C语言中的一个关键字,表示空类型或无类型,绝大部分情况下也就意味着没有 return 语句。
有参函数的定义
有参函数定义的一般形式如下:
返回值类型 函数名(参数列表){
函数体
}
与无参函数相比,有参函数的定义多了“参数列表”。
定义一个函数求两个数中的最大值:
int max(int a, int b){
if (a>b){
return a;
}else{
return b;
}
}
参数列表可以是各种类型的变量,要指明数据类型和变量名称;各个参数之间用逗号,
分隔。参数列表中给出的变量可以在函数体中使用。
函数定义时给出的参数称为形式参数,简称形参;函数调用时给出的参数称为实际参数,简称实参。函数调用时,将实参的值传递给形参,相当于一次赋值操作。注意:实参和形参的类型、数目必须一致。
将上面的代码补充完整:
#include <stdio.h> int max(int a, int b){
if (a>b){
return a;
}else{
return b;
}
} int main(){
int num1, num2, maxVal;
printf("Input two numbers: ");
scanf("%d %d", &num1, &num2);
maxVal = max(num1, num2);
printf("The max number: %d\n", maxVal); return 0;
}
运行结果:
Input two numbers: 100 200
The max number: 200
定义max时,变量a、b的值都是未知的;调用max时,分别将num1、num2的值传递给a、b,类似于:
a=num1;
b=num2;
return 语句可以有多个,可以在函数体的任意位置;在max中,根据 if 的判断结果来执行不同的 return 语句。
最新文章
- 游戏中的人工智能——初探AI
- EF下CodeFirst、DBFirst与ModelFirst分析
- OpenLayer 3 鹰眼控件和全屏显示
- TxDragon的训练5
- 2017-07-04(sudo wc sort)
- drawnet.py绘制网络结构
- 【Vagrant】-NO.130.Vagrant.1 -【Vagrant】
- 【Entity Framework】Revert the database to specified migration.
- 3.GDScript(1)概览
- CSS text系列
- Oracle学习笔记:使用replace、regexp_replace实现字符替换、姓名脱敏
- 0_Simple__simpleSurfaceWrite
- 笨鸟先飞之Java(一)--使用struts2框架实现文件上传
- HDU1598 并查集+贪心
- Linux wget auto login and backup database
- CentOS+uwsgi+django+nginx 环境部署及分析
- Struts2常量详解
- day02.4-字典内置方法
- 对HashMap进行排序
- Java全局变量
热门文章
- silverlight .net后台 设置visifire控件图表样式 属性说明
- Access restriction: The type * is not accessible due to restrict,报错问题
- ios文件读取(二)
- hadoop容灾能力测试
- [转载]移动终端浏览器初始设置apple-mobile-web-app-capable
- Hdu1092
- HBase架构深度解析
- BZOJ 1565 植物大战僵尸
- gridview两列数据的互换
- jquery中table里面的tr里的input添加一行,并且第一列autoincrement