嵌入式学习Day9 C语言 --- 函数

函数 

1、函数的作用

      实现某一具体功能

2、函数的定义( 实现函数的过程 )

    返回值的类型标识符 函数名(形式参数) //函数头 
    {
        函数体      //实现函数具体功能代码 
        
        返回结果  //return 返回结果 
    }

    (1).类型标识符 (返回值的类型标识符)
    (2).函数名    --- 一般和函数功能对应 
    (3).形式参数 --- 函数接收数据的入口 
                         --- 不是一定要有,看函数功能的需要,没有的话可以不写,写的话一般写void
               
        形参使用时:
        a.个数相同 
        b.类型匹配 
        c.形参与实参匹配顺序 

        形参 与 实参匹配顺序  -- 在ubunt18.04平台上 顺序是 从 右向左

形参eg:


     
    (4).函数体   ---  完成函数具体功能的代码 
    (5).返回值类型 
            返回值 如果没有,返回值类型 一般写成void 
            返回的结果的类型 与 定义返回值类型 不一致 ,以定义的返回值类型为准 
            返回值的类型如果不写,默认为int型 
        

3、函数定义的位置

    (1) main函数之前不需要声明
    (2) main函数之后需要声明

    函数的声明:函数头 + 分号 

    函数声明可以放的位置:函数调用之前   

4、函数调用的形式

    (1) add(a,b); // 函数调用语句 

    (2) int ret = add(a,b); //函数调用在表达式中 

    (3) ret = add(a,b) + 3; //表达式的一部分

    (4) printf("sum = %d\n",add(a,b)); //函数调用作为某个函数的实际参数

  5、函数调用的本质

栈:
   特点: 
    先进后出 (FILO)
    inux系统上 ,默认情况下 8M ,大小可以调整。
    主要:
      局部变量 
      
      自动申请 自动释放 
      
堆:
  特点:
    大 
    手动申请,手动释放 


字符串常量区:
  char s[10] = "hello";
  
全局区(静态区)
  全局变量(静态变量)
  
代码区

内存的5个区

特殊的嵌套调用 --- 递归 (自己调用自己)
递归 --就是循环

直接递归
间接递归  


while (1)  //死循环 
{
  
}


6、递归:
 1.
 2.算法 
 
递归的思路,实现代码?

eg:

1+...+100 
int i = 0;
int sum = 0;
while (i <= 100)
{
  sum += i;
}

//1.初始条件
//2.结束条件 
//3.趋于结束的操作 
//4.循环体 


//sum()
递归来实现: //倒着来 

sum(100)
 |--sum(99)+100
     |--sum(98)+99
         |--sum(97)+98
           ...
            |--sum(2)+3
                |--sum(1)+2
                      |--1

   
   
写出代码:
1.递推关系 //重复的 
 第n项 与 第n-1项之间的关系 
2.结束条件 

sum(100) = sum(99)+100
sum(99) = sum(98) + 99

sum(n) = sum(n-1) + n; //

sum(2) = sum(1)+2
sum(1) = 1


sum(2)

sum(n) = 
int sum(int n) //n = 2
{
  if 递归是否结束? (n==1)
  { //结束
    return 1;
  }else // 
  {
    return sum(n-1)+n;
  }
   
}


//递归函数内部的逻辑:
1.看是否递归结束了?

如果结束,返回结束时的值

2.如果没结束 
递归继续往下 


练习:
 1.n的阶乘

    
     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值