c语言——函数

慈云数据 5个月前 (05-28) 技术支持 57 0

1.函数的概念

在数学中我们学习过如一次函数;二次函数等,其实在C语言中也引入了函数(function)的概念

C语言函数是一种函数,用来编译C语言,一般包括字符库函数,数学函数,目录函数,进程函数,诊断函数,操作函数等。 

有些也将function翻译为⼦程序,子程序这种翻译更加准确⼀些。

C语言的程序其实是由无数个小的函数组合而成的,且⼀个函数如果能完成某项特定任务的话,这个函数也是可以复用的,提升了开发软件的效率。

在c语言中我们一般会用到两种函数:
     1.库函数

     2.自定义函数                

2.库函数

1.库函数是什么 

在C语言标准中规定了C语言的各种语法规则,C语言并不提供库函数;C语言的国际标准ANSI C规定了⼀些常用的函数的标准,被称为标准库,那不同的编译器⼚商根据ANSI提供的C语言标准就给出了⼀系列函数的实现。这些函数就被称为库函数

有了库函数一些常用的功能就不需要我们自己去编写了,可以直接引用库函数,从而提升编写代码的效率,还能保住代码的质量 在使用库函数时需要引用相应的头文件,这些库函数根据功能的划分,都在不同的头文件中进行了声明。
相关头文件:https://zh.cppreference.com/w/c/header

2.库函数的学习查找工具

C/C++官方的链接:https://zh.cppreference.com/w/c/header

cplusplus.com:https://legacy.cplusplus.com/reference/clibrary/

3.自定义函数

库函数很重要但在c语言中更重要的是自定义函数,有了自定义函数我们才能写出不一样的代码,让我们更具有创造性。

1.函数的语法形式

自定义函数的形式如下:

 

ret_type fun_name(形式参数)
{
}

在自定义函数中当无需返回值时,返回类型就是void,当参数数量为零时,形参部分可以是void也可以在括号内不放任何值 

2.自定义函数的作用 

我们可以把函数想象成小型的⼀个加工厂,工厂得输入原材料,经过工厂加工才能生产出产品,那函数也是一样的,函数⼀般会输入一些值,这些值也就是参数(可以是0个,也可以是多个),经过函数内的计算,得出结果

 

3.函数举例

如果我们要设计一个函数来实现两个整形变量加法的功能,在这个函数内就有两个整形变量,后实现相加功能,最后返回相加的值

首先将主函数部分代码实现出来

#include
int main()
{
  int a=0;
  int b=0;
  scanf("%d %d",a,b);
  int sum=Add(a,b);
  printf("%d",sum);
 return 0;
}

在主函数传两个参数给Add函数 ,函数Add需要接收2个整型类型的参数

在该函数头部分由于是整形变量的,且返回值也是一个整形,所以函数同如下

int Add(int x,int y)

在主函数传两个参数给Add函数 ,函数Add需要接收2个整型类型的参数

所以我们根据上述的分析写出函数:

 

Add(int x,int y)
{
  int z=x+y;
  return z;
}

4.形参与实参

在函数使⽤的过程中,把函数的参数分为,实参和形参。

在调用函数时候真实传递给函数的参数叫做实际参数,简称实参

在上面的加法函数中但没有调用Add函数时,Add函数内的x与y没有创建空间,这时x与y只是形式上的存在,所以我们将函数名后面定义的参数叫做形式参数,简称形参

只有但Add函数被调用的时候内存才会为参数x和y分配空间,这个过程就是形参的实例化

形参与实参的关系

在以上代码中我们通过调试来感受形参与实参的关系

通过以上调试可以看到实参a,b与形参x,y的地址是不同的,说明形参与实参的存储空间不同,形参只是将实参的内容拷贝过来了,所以我们可以理解为形参是实参的一份临时拷贝 

5.return 语句

在函数设计过程中经常用到return语句,而在使用return语句时有一些事项要注意

1.后边可以是⼀个数值,也可以是⼀个表达式,如果return语句后是一个表达式,则先执行表达式,再返回表达式的结果

在以上的加法函数Add中可以简化为

在以上return语句后就会先执行x+y,再返回相加的值

2. return后边也可以什么都没有,直接写 return; 这种写法适合函数返回类型是void的情况,return语句执行后,函数就彻底返回,后边的代码不再执行
#include
void test(int x)
{
 if(x>5)
  return;
  printf("yes");
}
int main()
{
 int a=0;
scanf("%d",&a);
 test(a);
 return 0;
}

若要使输入的值大于5时就不会打印yes,就可以在printf前在x>5时使用return

3. return返回的值和函数返回类型不一致,系统会自动将返回的值隐式转换为函数的返回类型
#include
int test(float x)
{
  return x/2;
}
int main()
{
 float a=0;
scanf("%f",&a);
 int b=test(a);
printf("%d",b);
 return 0;
}

如在以上代码中在test函数内x/2的结果是浮点型,但test函数的返回类型是整形,这时编译器就会自动将返回的浮点形数转化为整形数

4.如果函数中存在if等分支的语句,则要保证每种情况下都有return返回,否则会出现编译错误

如在以上代码中在test函数内使用了if语句,在i>5时return1,但在i

微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon