当前位置: 首页 > news >正文

C语言--函数

1. 函数定义

语法:

类型标识符 函数名(形式参数)
{函数体代码
}

(1)类型标识符 --- 数据类型(函数要带出的结果的类型)

注:数组类型不能做函数返回结果的类型,如果函数不需要带出什么结果,此时返回结果的类型说明符为void,如果返回结果的类型与类型说明符不一致,以类型说明符为准(类型说明符不写,默认为int)。

(2)函数名 --- 标识符,符合标识符命名规则

(3)形式参数 --- 表示改函数需要用到的数据

注:每一个形参变量都得指定类型,实参和形参需要类型匹配,参数个数相同,顺序一一对应,如果不需要接收实际参数,形参一般设计为void

(4)函数体代码 --- 实现函数功能的代码。

        写法:                

数据类型 形参变量名1,数据类型 形参变量2...
int a,int bint a,b     // 不能这样写

2. 函数调用

函数调用的本质:实际上是利用栈的结构,先进后出,保证了函数可以层层嵌套调用。

调用者和被调用者:main函数时整个程序的入口,只能是调用者

注:函数不支持嵌套定义,但是可以嵌套调用

函数名是函数的入口地址。

3. 递归

可以实现循环的功能,是一种特殊的循环。

直接递归:自己调用自己

间接调用:调用其他函数,其他函数调用了自己,这样又实现了调用自己。

代码实现思路:

(1)递推关系 --- 从问题n到问题n - 1;

(2)递推结束的条件

eg:前 n 项的累加求和

sum(n)=> sum(n-1)+ n            //递推关系

n = 1;                           // 结束条件

#include<stdio.h>int sum(int n)
{if(n==1)                    // 递推结束条件{return 1;}else{return sum(n-1)+n;     // 递推关系}
}int main(void)
{int n;printf("Input a num:");scanf("%d",&n);int ret = sum(n);printf("%d\n",ret);return 0;
}

代码运行结果:

4. 数组作为函数参数

(1)数组元素作为函数参数--- a[0]

(2)数组本身作为函数参数--- a

        形参--- 写成数组形式,还需要数组长度

        实参--- 数组名,数组长度

printfArray(int a[],int len)    // 形参printArray(a,len);    //调用

eg:打印数组元素

#include<stdio.h>void printArray(int a[],int len)        // 定义形参
{int i = 0;for(i = 0;i < len;++i){printf("a[%d] = %d\n",i,a[i]);}
}int main(void)
{int a[] = {1,2,3,4,5,6,7,8,9};int len = sizeof(a)/sizeof(a[0]);printArray(a,len);                  // 调用时传入实参return 0;
}

http://www.lryc.cn/news/414420.html

相关文章:

  • Shell 编程的高级技巧和实战应用
  • VMWare虚拟机如何连接U盘
  • 【学习笔记】后缀自动机(SAM)
  • Godot的节点与场景
  • C++ 学习(2) ---- std::cout 格式化输出
  • 前端拿不到Long类型成员变量,用@JsonSerialize(using = ToStringSerializer.class)序列化一下
  • JWT登录校验流程
  • yarn安装和部署
  • Visual Studio的安装教程与使用方法
  • 一键换装软件哪个好?6个换装工具让你秒变穿搭达人
  • 【EtherCAT】Windows+Visual Studio配置SOEM主站——源码配置
  • GPTPDF深度解析:开源文档处理技术全攻略
  • 网络学习:应用层DNS域名解析协议
  • 7.怎么配置一个axios来拦截前后端请求
  • Day17_1--AJAX学习之GET/POST传参
  • golang国内proxy设置
  • 全网最适合入门的面向对象编程教程:31 Python的内置数据类型-对象Object和类型Type
  • 【mongodb】mongodb副本集的搭建和使用
  • Java后端面试复习7.24
  • 前端 HTML 概述
  • 探索Thymeleaf:用动态Web模板引擎打造吸引人的用户界面(SpringBoot的html详解)
  • 视频教程 - 自研Vue3 Tree组件高级功能:虚拟滚动新增节点实现自动滚动
  • 职业生涯阶段总结3:转眼毕业三年
  • 项目经理面试总结
  • (免费领源码)java#springboot#mysql大学校园旧物捐赠网站 25109-计算机毕业设计项目选题推荐
  • Java 设计模式之单例模式
  • Linux系统驱动(二)字符设备驱动
  • Day29 | 动态规划 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯
  • 【开源移植】MultiButton_小型按键驱动模块移植
  • 【Python系列】Python 字典合并