概念:
C语言是一种过程式编程语言,它允许程序员通过编写函数(function)来组织代码,实现代码的模块化和重用。函数是C语言中的一个重要概念,函数思想是从上到下逐步求解的过程,把大问题拆解成小问题,函数的核心也可以理解成一个字---‘拆’;
下面是一些关于C语言函数的基本要点:
-
定义:函数是一段具有特定功能的代码块,它可以接受输入(参数),进行处理,并返回结果(返回值)。即把功能给实现出来。
-
声明:在使用函数之前,需要先声明函数的名称、返回类型和参数列表。这告诉编译器函数的存在以及如何调用它。
-
返回类型:每个函数都有一个返回类型,它指定了函数执行完毕后返回的数据类型。常见的返回类型包括
int
、float
、double
、char
等,以及void
,表示函数不返回任何值。 -
参数:函数可以有一个或多个参数,这些参数在调用函数时提供给函数。参数允许函数根据输入执行不同的操作。
-
调用:在程序中,可以通过函数名和相应的参数列表来调用函数。即使用函数,使用功能。
C语言中函数的返回类型有哪些:
-
void:
- 表示函数不返回任何值。
- 通常用于那些只执行操作而不产生结果的函数。
-
int(整数):
- 用于返回整数值。
- 在C语言中是最常用的返回类型之一。
-
float(浮点数):
- 用于返回单精度浮点数值。
- 通常用于需要表示小数的计算。
-
double(双精度浮点数):
- 用于返回双精度浮点数值。
- 精度高于
float
,适用于需要高精度计算的场合。
-
char(字符):
- 用于返回单个字符。
- 字符在C语言中以整数形式存储,因此
char
类型的返回值也可以表示小的整数。
-
unsigned(无符号类型):
- 可以与上述所有数值类型结合使用,表示不能为负的数值。
- 例如,
unsigned int
表示一个无符号的整数。
-
数组:
- 函数不能直接返回数组,但可以通过指针或指向数组的指针来间接返回数组。
-
指针:
- 函数可以返回指针类型,指向动态分配的内存或静态数据。
每种返回类型都有其特定的用途和适用场景。选择合适的返回类型可以使代码更加清晰和高效。在设计函数时,应根据函数的预期用途和需要返回的数据类型来选择合适的返回类型。
函数的定义:
返回类型 函数名(参数列表)
{
// 函数体代码
// 可以包含变量声明、语句、控制结构(如if、for、while)等
return 返回值; // 根据需要返回值;
}
1、返回类型:例如,int、float、void等。
如果返回值的类型与返回类型的数据类型不一致,以函数返回类型为主。
如果不定义返回类型,则
2、函数名:这是函数的唯一标识符,遵循C语言的命名规则。
3、形式参数:表明该函数要用到的数据
形参写法: 数据类型 形参变量名1,数据类型 形参变量名2,数据类型 形参变量名2
注意:
1、参数列表包括参数的类型和名称。如果没有参数,即不需要接受实际参数,定义成void,可不写;可以使用空括号(),注意此时返回return,也可不写。
2、参数列表可以包含多个参数,参数之间用逗号分隔。
3、每一个形参变量都必须明确指定类型;
基本使用举例: 实现两个数求和
步骤:
1、先确定函数名
2、再考虑函数需要用到哪些数据
3、处理数据:函数体的具体实现
4、return语句;//表示从函数中返回,代表函数结束;
int add(int a, int b)
{
int sum = a + b; // 声明局部变量sum,并计算a和b的和
return sum; // 返回计算结果
}
函数的调用:
在C语言中,函数调用是程序中一个非常重要的概念,它允许你执行定义好的函数。函数调用的基本语法如下:
函数名(参数列表);
这里,
函数名
是你想要调用的函数的名称,参数列表
是传递给函数的实际参数,它们必须与函数定义时的参数类型、个数相同、顺序一致,因为实参和形参有对应关系。
注意:函数调用中的函数传参问题
函数传参传的是数值!值传递,调用时输入的实参的数值传递给函数中的形参。
函数的声明
在C语言中,函数的声明是告诉编译器函数的存在,包括函数的名称、返回类型以及参数列表。函数声明允许你在程序中调用一个函数,即使该函数的定义在声明之后。这有助于组织代码,尤其是在大型项目中,可以避免因为函数定义顺序问题导致编译错误。
即若函数定义在main函数之后,则需要在函数被调用之前,进行函数的声明;
返回类型 函数名(参数类型1 参数名1, 参数类型2 参数名2, ...);
示例:
假设我们有一个函数add
,它接受两个整数参数并返回它们的和。以下是这个函数的声明和定义
// 函数声明
int add(int a, int b);
// 函数定义
int add(int a, int b) {
return a + b;
}
最后,小练习,用函数判断一个数是否是素数:
int sushu(int a)
{
int b;
for(b = 2;b <= a;b++)
{
if(a%b == 0)
{
break; //找到就break出去;去判断b是为多少出去的;
}
}
if(b == a)
{
return 1;
}else
{
return 0;
}
}
int main(void)
{
int a,b;
scanf("%d",&a);
b = sushu(a); //b存储函数返回值
if(b == 1)
{
printf("yes");
}else
{
printf("no");
}
return 0;
}