C语言 第三章 函数 (1)

发布于:2025-03-06 ⋅ 阅读:(27) ⋅ 点赞:(0)

目录

函数 

作用:

函数的分类

角度1:从程序执行的角度看 

角度2:是否允许源文件外调用角度看 

角度3:从用户使用的角度看

函数声明

函数定义的格式:

}具体说明:

1)返回值类型

实例

2)函数名

3)参数列表

4)函数体

5)关于return 语句

实例


函数 


将提取出来的代码封装进代码块完成某个功能,就称为函数。


作用:

  • 将特定功能的代码封装为函数的好处: 实现代码重用,减少冗余,简化代码。
  • 一个C源程序可以由一个或多个源文件构成(C文件扩展名是"."),一个源文件是一个编译单位。一个源文件
  • 可以由若干个函数构成,函数之间可以相互调用。也就是说,函数是c程序基本的组成单位。

函数的分类


角度1:从程序执行的角度看
 

  • 主函数:main()函数
  • 子函数:非main()函数

每个C应用程序只有一个,且必须有一个main()主函数。无论主函数写在什么位置,C程序总是从main()函数开始执行。main()函数可以调用其它的子函数,子函数之间可以相互调用任意多次。


角度2:是否允许源文件外调用角度看
 

  • 内部函数
  • 外部函数

角度3:从用户使用的角度看

① 库函数(或标准函数)
它是由C系统提供的,用户不必自己定义,可直接使用它们。注意,不同的C语言编译系统提供的库函数的数量和功能会有一些不同,但是一些基本的函数是共同的。比如:
 

  •  字符串操作函数
  • 字符操作函数
  •  时间/日期函数
  •  数学函数 
  •  IO函数
  • 内存操作函数
  •  其它库函数

使用库函数,必须包含 #include 对应的头文件。

② 用户自己定义的函数
它是用以解决用户特定业务需求的函数。


函数声明


函数定义的格式:


返回值类型 函数名(数据类型1 形參1,数据类型2 形參2,…,数据类型n 形參n){
函数体;

}



具体说明:


1)返回值类型


函数调用后,是否需要在函数调用处得到一个确定的、返回的值,针对这个返回值的描述,就是返回值类型。返回值常常是一个计算的结果,或是用来作为判断函数执行状态(完成还是出错)的标记。
函数按是否有返回值来分类的话,分为:
无返回值的类型:

针对函数无返回值或明确不需返回值的情况,使用 void(即空类型)表示。

举例:输出函数 void printf(format, ….)。
有返回值的类型:

指明具体的类型。比如,int、float、char等。如果省略,默认为int类型

有返回值类型,则需要在函数体内与“return 返回值"搭配使用。返回值需要与返回值类型一致

实例

#include <stdio.h>
// 声明定义函数
// 声明一个无返回值,无参数的函数
void printHello(){
    printf("Hello\n");
}
int main(){
    printHello();
    printHello();
    printHello();

    return 0;
}

2)函数名

函数名,属于标识符。要遵循标识符的命名规则,同时要见名知意,以增强程序的可读性。


3)参数列表

函数名后面的圆括号里面,可以声明参数的类型和参数名。表示完成函数功能时需要外部提供的数据列表。
根据是否有参数,函数可以分为:
 
无参函数

在调用无参函数时,主调函数不向被调用函数传递数据。但函数名后的()不能省略。
举例:

     printHello()不接受任何形参。
有参函数

在调用函数时,主调函数在调用被调用函数时,通过参数向被调用函数传递数据。
 
函数参数为多个参数时,其间用逗号隔开。
 
举例:

      add(int m,int n)

//打印5行6列的*型矩形
void printO{
for(int i = 0;i < 5;i++){
for(int j = 0;j < 6;j++){
printf("*");
printf("\n");
//打印m行n列的*型矩形
void printGraph(int m,int n){
for(int i= 0;i < m;i++){
for(int j=0;j < n;j++){
printf("*”);
printf("\n");
}

4)函数体

  • 函数体要写在大括号{}里面,是函数被调用后要执行的代码。
  • 对于调用者来说,不了解函数体如何实现的,并不影响函数的使用。

5)关于return 语句

return语句的作用:

    ① 结束函数的执行

     ②将函数运算的结果返回。
:return语句后面就不能再写其它代码了,否则会报错。(与break、continue情况类似)
下面分两种情况讨论:

  • 情况1: 返回值类型不是void时,函数体中必须保证一定有 return 返回值;语句,并且要求该返回值结果的类型与声明的返回值类型一致或兼容。
  • 情况2:    返回值类型是void时,函数体中可以没有return语句。如果要用return语句提前结束函数的执行,那么return后面不能跟返回值,直接写return;就可以。

实例

#include "stdio.h"
//返回两个整数中较大的一个值
int maxInt(int a,int b){
int max =(a>b)?a:b;//执行任务
return max;//函数结束执行,并返回一个值
}
int main(){
int max = maxInt( a: 10,b: 5);// 调用函数,传出两个整数,返国两个中较大的一个值
printf("最大值%d\n",max)
return 0;
}

网站公告

今日签到

点亮在社区的每一天
去签到