函数 C语言】

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

函数的声明和定义

函数间调用关系是由于函数调用其他函数替他函数也可以互相调用同一个函数可以被一个或多个函数调用任意次。
先声明后调用。

#include <stdio.h>  //去标准库下找文件
#include "stdio.h"  //在当前目录下找自己定义的头文件 

C语言的编译和执行具有一下特点

  1. 一个C程序由一个或多个程序模块组成每个程序模块作为一个源程序文件。对于较大的程序通常将程序内容分别放在若干源文件中再由若干源程序文件组成一个C程序。这样处理便于 分别编写、分别编译进而提高调试效率。一个源程序文件可以为多个C程序共用。
  2. 一个源程序文件由一个或多个函数及其他有关内容如命令行、数据定义等组成。一个源程序文件是一个编译单位在程序编译时是以源程序文件为单位而不是以函数为单位进行编译的。main.c和func.c 分别单独编译在链接成为可执行文件时main中调用的函数printstar和print_message会通过链接去找函数定义的位置。
  3. C程序的执行是从main函数开始的如果在main函数中调用其他函数那么在调用后会返回到main函数中在main函数中结束整个程序的运行。
  4. 所有函数都是平行的即在定义函数时是分别进行的并且是相互独立的。一个函数并不从属于另一个函数即函数不能嵌套定义。函数可以互相调用但不能调用main函数。main函数是由系统调用的。main函数中调用print_message函数而print_message函数中又嗲用printstar函数我们把这种调用成为 “嵌套调用”。

函数声明与定义的差异

  1. 函数的定义是指对函数功能的确立包括制定函数名、函数值类型、形参及其类型、函数体等它是一个完整的、独立的函数单位。
  2. 函数的声明的作用是把函数的名字、函数类型及形参的类型、个数和顺序通知编译系统以便在调用该函数时编译系统能正确识别函数并检查调用是否合法。
    隐式声明C语言中有几种声明的函数名可以省略。例如函数如果不显式地声明返回值类型那么它默认返回类型。

函数的分类和调用

用户角度

  1. 标准函数
  2. 自己定义的函数
    1. 无参函数
    类型标识符 函数名{
    声明部分
    语句部分
}
3. 有参函数 		
类型标识符  函数名形式参数列表{
    声明部分
    语句部分
}

函数的递归调用

函数自身调用自身的操作称为递归函数递归函数一定要有结束条件。
递归的核心是找递归公式
例如n 的 f(n)=n*f(n-1)

#include <stdio.h>

//假如有n个台阶一次只能上一个台阶或两个台阶请问走到第n个台阶共有几种走法
int step(int n){
    if(1==n||2==n){  //当台阶数是1个或者2个时递归结束
        return n;
    }
    return step(n-1)+step(n-2);
}
int main() {
    int n;
    scanf("%d",&n);
    printf("%d\n",step(n));
    return 0;
}

局部变量与全局变量

全局变量-形参-实参解析

在不同的函数之间传递数据时可以使用的方法如下

  1. 参数通过形式参数和实际参数。
  2. 返回值用return语句返回计算结果。
  3. 全局变量外部变量。

在这里插入图片描述
全局变量位于数据段。
int i 位于栈空间。
如果局部变量与全局变量重名那么将采取就近原则即实际获取和修改值是局部变量的值。
局部变量在离最近的大括号内有效。

{
int i = 3;
}

全局变量全程变量 从定义处有效。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6