第七章 函数

函数

  1. 实现某个功能多次多次调用
int array_max(int a[],int len)  //array_max 函数名;a  需要操作的数组;len 数组长度
{
    int i,max=a[0];
    for(i=1;i<len;i++){
        if(a[i]>max)
            max=a[i];
    }
    return max;
}

定义

  1. 就是具有特殊功能的指令集合
  2. C程序从main()开始执行
  3. 从用户角度出发可分为:库函数和用户自定义的函数
    1. 库函数:由标准C库提供,用户不需要自己实现,在使用时直接调用即可,eg:printf、scanf
    2. 用户自定义:用户自己定义
  4. 语法
类型标识符 函数名(形参列表)
{
    函数体
}

说明:
1.类型标识符:函数返回的数据类型,支持C语言所有的数据类型(无返回void)
2.函数名:用户自定义的标识符
3.形参列表:函数用来接受用户所传递的数据参数,参数可以是多个也可以是0个
4.函数体:实现函数功能的代码块
    

无参函数的定义

  1. 函数不需要接受用户传递的数据
类型标识符 函数名(){
    函数体
}
注意:形参列表为空
  1. 如果函数不需要返回值,“类型标识符”可以设计位void
void func()
{
    printf("hotpot!\n");
    
}
  1. rg

有参数的函数定义

  1. 根据实际需求

参数和返回值

  1. 形参和实参
    1. 形参出现在函数的定义中,在整个函数体中都可以访问到,离开就不可以
    2. 实参出现在函数调用
    3. 函数调用时,将实参值赋值给形参
    4. 特点:
      1. 形参被调用时才会被分配空间(没有调用不会分配空间)
      2. 实参可以是常量、变量、表达式、函数名
  2. 函数栈:系统自动分配和回收

局部变量和全局变量

  1. 局部变量
    1. 定义在{}内的变量(函数内不对,作用域:{}内)
#include <stdio.h>

int max1(int a, int b) // 形参列表
{
    int c = 10; // 局部变量
    {
        int c; // 内部作用域的c,覆盖外部的c
        c = 100;
        printf("内部c: %d\n", c); // 缺少的参数c添加进来
    }
    printf("外部c: %d\n", c); // 缺少的参数c添加进来
    return a > b ? a : b;
}

int main() {
    max1(10, 11);
    return 0;
}
2. 
3. 
  1. 全局变量
    1. 函数外;可以在整个程序被访问
    2. 全局变量初始化值为0
    3. 局部变量如果和全局变量重名,会覆盖全局变量(在本函数内)

嵌套

  1. 嵌套调用
    1. 名字(数字字母_组成;数字不能为首位)
    2. 名字(形参列表)
    3. 返回值(无:viod;有:类型(int float))
  2. 某个函数调用另外一个函数
    1. 2
void b(){
    printf("b\n");
}
void a(){
    printf("a\n");
    b();
    printf("a over\n");
}
int main(){
    a();
    return 0;
}
2. <img src="https://cdn.nlark.com/yuque/0/2025/png/45578875/1753606815514-64eddc31-f8e3-4aaa-a79d-39bdf3665df6.png" width="352.5" title="" crop="0,0,1,1" id="u866663af" class="ne-image">

声明

  1. 语法
函数类型 函数名(形参列表);
注意:
1.后面有分号;
2.函数声明时,函数类型(返回值类型)必须与函数实现一致,函数名必须和函数实现时一致
3.形参列表中,可以不填写形参变量的名字,只需要填写形参的类型即可,如:
int fun(int,float);

递归函数:及时终止

  1. 定义
    1. 一个函数在自己的函数体内调用自身称为递归调用
    2. 例子
void func(){
    func();
}
  1. 使用
    1. 什么时候使用
      1. 某个功能与本函数一样
    2. 递归调用是这种模式,出现什么
  2. 示例
long long fact(int n){
    if(n ==1)
        return;
    return n*fact(n-1);
}
posted @ 2026-03-23 15:21  小离儿  阅读(4)  评论(0)    收藏  举报