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

C语言学习之函数

函数的声明

声明:

  1. 当被调函数定义在主调函数的后边,编译器”implicit declration”,可以将该函数在主调函数前边进行声明
  2. 多文件使用函数时,需要对其进行声明,允许被其它文件调用

语法:

返回值 函数名(形参表);

  1. 函数的调用过程

函数在调用的时候存在保护现场和恢复现场的操作:

保护现场:当函数要被调用的时候,会将函数调用位置的下一条指令地址保存在栈空间;

恢复现场:当被调函数执行完时,通过出栈保护现场的地址,决定cpu继续执行的位置在函数被调用的下一条指令位置

函数的传参

1. 函数传参过程,其实是实参向形参拷贝的过程,实参有实参的空间,形参有形参的空间(值传递)。

2. 值传递:在被调函数中,无法修改主调函数中的变量。

3. 函数传参的顺序:自右向左。

函数的递归调用

递归调用:函数直接或间接的调用自己

本质:是一种循环方式

注意:

1. 递归要有递归的出口,否则会成为死循环。

2. 递归调用系统开销比循环大(比如:栈内存)。

函数一维整型数组

传参方式:

定义:返回值 函数名(数组类型 数组名[],int len)

{

//外面数组怎么使用,函数内数组就怎么使用

}

调用:

函数名(数组名,数组长度);

注意:

  1. 数组作为函数参数传递时,形参必须要是数组类型;int a[],[]中的常量可有可无
  2. 2.数组作为函数参数传递时,本质传递的数组首元素地址,所以形参本质是一个地址,是数组的起始地址
  3. 由于数组名传参本质传递的是首地址,所以把必须要传递整形数组的长度
  4. 数组作为函数参数传递给被调函数后,函数内部的使用方法和外面一样,除了sizeof(数组名)
http://www.jsqmd.com/news/1305011/

相关文章:

  • 树上差分算法解析:高效解决边覆盖统计问题
  • 什么是越权漏洞?为什么你的SAST检不出来?
  • DAY11指针
  • AIGC检测多少算合格?2026年高校AI率标准与应对指南
  • C++数组初始化陷阱:memset全1为何导致线上故障?
  • 分支限界法精解:高效求解最小权顶点覆盖问题
  • SpringBoot构建琼瑶作品品鉴平台的技术实践
  • RAG技术过时了吗?PageIndex架构解析与迁移指南
  • 向量双塔编码器为什么无法替代 BM25 的稀有词 IDF:C++ 混合检索中从编码层到融合层的完整技术栈
  • 编程实现小马绘制:从字符画到图形界面的多方案实践
  • 2026非诉专项法律服务机构实力口碑榜 备选企业照着选不踩坑 - mypinpai
  • 高校AIGC降重工具对比:千笔与云笔AI实测分析
  • Excel动态库存管理:从SUMIFS到VLOOKUP,打造实时自动化仓储系统
  • 群体遗传学中的Tajima‘s D:原理、计算与生物学解读全解析
  • HarmonyOS 应用开发《掌上英语》第75篇:ContainerReader 容器断点:告别全局 BreakpointModel,实现组件级自适应布局
  • 微信小程序在学生知识成果展示中的实践与优化
  • C语言中的函数(定义、调用、声明、传参、递归调用)与一维整型数组
  • 解锁Edge浏览器隐藏技能:免费不限次将图片公式转LaTeX/Word
  • 免费获取百度文库文档:终极浏览器脚本解决方案
  • 为什么要在信号线上加电阻?看懂波形就懂:反射、振铃、EMI
  • 深入解析CAN接口:从差分信号到多主仲裁的嵌入式通信实战
  • k8s集群serviceIP和podIP不够踩坑记录
  • 绝区零一条龙:3分钟上手,解放双手的全自动游戏助手终极指南
  • 2026中专学校实力口碑榜,备选学生照着选不踩坑,避坑指南 - mypinpai
  • OPC模式解析:一人公司如何实现高效创业
  • 基于ESP32-S3的桌面多功能交互终端设计与实现
  • 深入解析Java内置日志框架JUL:从核心原理到实战配置
  • 完整构建评价指标体系的过程
  • 多智能体协同:用AI编排技术攻克复杂推理任务
  • 非ROOT环境下Frida动态调试Android应用:重打包注入与实战指南