请选择 进入手机版 | 继续访问电脑版
贠老师培训群:150322713    贠老师QQ:767708506

贠老师office培训-excel学习网

 找回密码
 立即注册
点击咨询贠老师
查看: 145|回复: 9

[C语言] C语言自定义函数

[复制链接]

3172

主题

3269

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
22691
发表于 2015-12-24 17:46:27 | 显示全部楼层 |阅读模式
函数可以分为无参函数和有参函数。
无参函数的定义无参函数定义的一般形式如下:
返回值类型  函数名(){
    函数体
}

说明:
  • 返回值类型可以是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 语句。
回复

使用道具 举报

3

主题

996

帖子

53

积分

注册会员

Rank: 2

积分
53
发表于 2016-1-7 12:20:12 | 显示全部楼层
大神啊!豁然开朗。。。。。。
回复 支持 反对

使用道具 举报

1

主题

1022

帖子

69

积分

注册会员

Rank: 2

积分
69
发表于 2016-1-12 11:12:56 | 显示全部楼层
顶顶
回复 支持 反对

使用道具 举报

0

主题

858

帖子

6

积分

注册会员

Rank: 2

积分
6
发表于 2016-1-23 09:45:30 | 显示全部楼层
好啊楼主,没想到啊,太好了
回复 支持 反对

使用道具 举报

0

主题

858

帖子

6

积分

注册会员

Rank: 2

积分
6
发表于 2016-1-31 20:09:11 | 显示全部楼层
顶楼主,帮你顶个贴,我挣个积分
回复 支持 反对

使用道具 举报

0

主题

879

帖子

10

积分

注册会员

Rank: 2

积分
10
发表于 2016-2-2 22:05:00 | 显示全部楼层
大神啊!豁然开朗。。。。。。
回复 支持 反对

使用道具 举报

1

主题

886

帖子

5

积分

注册会员

Rank: 2

积分
5
发表于 2016-2-9 22:58:03 | 显示全部楼层
顶楼主,帮你顶个贴,我挣个积分
回复 支持 反对

使用道具 举报

8

主题

1005

帖子

88

积分

注册会员

Rank: 2

积分
88
发表于 2016-2-13 09:53:43 | 显示全部楼层
好啊楼主,没想到啊,太好了
回复 支持 反对

使用道具 举报

0

主题

178

帖子

366

积分

中级会员

Rank: 3Rank: 3

积分
366
发表于 2016-2-14 14:32:13 | 显示全部楼层
终于看完了~~~
回复 支持 反对

使用道具 举报

0

主题

843

帖子

6

积分

注册会员

Rank: 2

积分
6
发表于 2018-10-25 14:41:43 | 显示全部楼层
赞一个
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



陕ICP备15003731号  

贠老师培训 GMT+8, 2018-11-21 02:13 , Processed in 0.210284 second(s), 32 queries .

快速回复 返回顶部 返回列表