嵌入式linux学习笔记:03_C语言_函数

一、函数概念?

1、 在linux C语言中,什么是函数?
C语言是一种面向过程的语言,C语言称之为函数式语言,可以将任何功能都封装成一个函数接口。
2、 在C语言中,封装函数意义?
在某些功能比较复杂,往往用户需要将其封装成一个函数接口,调用者使用该函数时,不需要关注过程,只需要知道传递什么参数和函数有什么返回值即可。

play_music(“xxx.mp3”); -> 参数就是这首歌名字。

听到这首歌 -> 返回值就是听到声音。

二、函数的书写规则?

1、 在linux C语言中,函数有哪些种类?
main函数: 主函数,在C语言中有且仅有一个,一般都在main函数开始执行,然后调用别的函数。

系统函数(system calls):man手册的2手册中,这些函数不需要用户写实现过程。

库函数(library calls):man手册的3手册中,这些函数不需要用户写实现过程。

自定义函数:不能在man手册查询得到,用户必须写清楚实现过程。

例子:

#include <stdio.h>
//1. main函数
int main(int argc,char *argv[])
{
   
       //2. 调用printf()库函数
       printf("helloworld!\n");
       //3. 调用自定义函数
       func();  //undefined reference to `func'  -> func()实现过程没有定义!  
       return 0;
}

2、自定义函数的书写规则?
1)确定函数的函数名 -> 函数名字最好体现函数的功能
命名规则: 与C语言中变量一样。 例子: my_fun

2)确定函数的形式参数列表
有形式参数:my_fun(形式参数1,形式参数2, … ,形式参数n) -> 有多少个形参,将来就需要传递多少个实参。

无形式参数:my_fun()

什么是形式参数?

形式参数在函数中作用,首先声明好,要调用该函数,首先需要什么参数。

例子: 露营(一张大被子,一张厚席子,一个高枕头,一个绿色桶)

例子:my_fun(int a,int b) -> 说明调用该函数时,需要传递二个整型数据给这个函数!

3)确定返回值类型 -> 写在名字前面
有返回值 -> 确定返回值类型

     int   -> 无论这个函数是调用成功还是失败,都会返回一个int类型。

     char  -> 无论这个函数是调用成功还是失败,都会返回一个char类型。

     float -> 无论这个函数是调用成功还是失败,都会返回一个float类型。
     
例子:
 int my_fun(int a,int b)

  return 0;

无返回值 -> void -> 代表该函数没有返回值

       例子: void my_fun(int a,int b)

  返回值类型 函数名字(形式参数列表)  -> 自定义函数头

4)函数体 -> {}
例子:

int my_fun(int a,int b)

{
      -> 功能就写在函数体中

}

3、如何调用函数?
1)确保调用函数实现过程已经写好了!
例子:

int my_fun(int a,int b)
{
   
       printf("a = %d\n",a);
       printf("b = %d\n",b);
       return 0;

} 

2)直接写函数名字,后面紧跟一个圆括号(),圆括号中存放东西就是实际参数(实参)。
例子:

my_fun(5,10);

结论: 形式参数值由实际参数直接初始化。 -> 这是不可逆的过程。

上述例子: a=5,b=10;

4、函数返回值情况

int my_fun(int a,int b)  -> 需要接受两个参数,返回一个int类型数据。
int ret;
ret = my_fun(5,10);  -> 将my_fun函数的返回值结果赋值给ret。

练习3:写一个函数实现接收三个int参数,经过约定的运算后,得到结果并打印出来。

    前面两个参数是计算,最后参数计算方式。
    计算方式: 
    		 1  -> +
             2  -> -
             3  -> *
             4  -> /

   fun(3,4,2)  -> 结果: 3-4=-1
   fun(3,4,3)  -> 结果: 3*4=12
#include <stdio.h>
int my_fun(int x,int y,int z)  // x=a y=b z=c
{
   
       int ret;
       switch(z)
       {
   
              case 1:
                     ret=x+y;
                     break;                 
              case 2:
                     ret=x-y;
                     break;            
              case 3:
                     ret=x*y;
                     break;             
              case 4:
                     ret=x/y;
                     break;             
              default:
                     printf("enter error!\n");
                     
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值