函数-day10

1,

函数 --- 实现某一个功能的 

函数的定义: 实现函数 

类型标识符 函数名(形式参数)
{
    声明部分
    语句部分
}

(1).类型标识符 (返回值的类型标识符)
   返回值类型 
        返回值 如果没有,返回值类型 一般写成void 
        返回的结果的类型 与 定义返回值类型 不一致 ,以定义的返回值类型为准 
        返回值的类型如果不写,默认为int型 
(2).函数名   --- 一般和函数功能对应 
(3).形式参数 --- 函数接收数据的入口 
    形参 --不是一定要有,看函数功能的需要 
    形参没有,一般写成 void 
          
    形参使用时:
    a.个数相同 
    b.类型匹配 
    c.形参 与 实参匹配顺序  -- 在ubunt18.04平台上 顺序是 从右向左 
     
(4).函数体   --- 完成函数具体功能的代码 

2.

函数定义的位置:
1)main函数之前
2)main函数之后
  函数的声明 
  函数头 + 分号 

  函数声明可以放的位置,使用之前   

函数调用的形式:
add(a,b);  函数调用语句 

int ret;

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

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

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

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


3,

函数名:
  add
  
形式参数:
  int a,b; //形参不能这样写 
  
  数据类型 形参变量名1,数据类型 形参变量名2,...
  
  int a,int b
函数功能:

  a+b
结果:
  return 结果;
  

函数调用:
语法:
  函数名(实际参数);

4,

1)栈:
     特点: 
           先进后出 (FILO)
   linux系统上 ,默认情况下   8M    大小可以调整
   主要: 局部变量 
            自动申请 自动释放 
      
      int a; 
2)堆:
  特点:大      手动申请,手动释放 
字符串常量区:
  char s[10] = "hello";
  
3)全局区(静态区)
  全局变量(静态变量)
  
4)代码区

内存的5个区
   
    
程序 = 代码 + 数据 

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

直接递归
间接递归 

5,递归

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.如果没结束 
递归继续往下 

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值