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

C语言中的函数(定义、调用、声明、传参、递归调用)与一维整型数组

1.函数定义

1.降低程序的耦合性(关联度),减少重复代码。

2.让程序模块化,增强代码的复用性。

返回值 函数名(形参表)

{

函数体;

}

返回值:类型说明符:intchar...等基本数据类型、构造数据类型、void返回函数最终结果。

void:空类型,当函数执行完,不需要有任何结果返回时,可以使用void类型的返回值。

函数名:标识符,遵循标识符的命名规则。

形参表:函数执行过程中需要用到的条件。

形式:

数据类型 形参名,数据类型 形参名,数据类型 形参名,...

2.函数的调用

函数名(实参表);

实参表:传递给函数的具体的条件

1,值2,值3...

1.实参的个数和形参的个数必须一致

2.实参和形参数据类型要一致,或者要相兼容

3.实参和形参名字可以相同,也可以不相同

4.函数不被调用则不执行,调用几次,则执行几次

函数名(实参表); ---表达式的结果是函数的返回值类型

当函数的返回值有一个明确的返回类型时,必须要return,如果不return,系统会返回一个随机值。

void返回值类型时,可以不return,或者直接写return

主调函数:调用函数的函数称为主调函数(main

被调函数:被调用的函数

3.函数的声明

声明:

1.当被调函数定义在了主调函数的后边,编译器报“implicit declaration”, 可以将该该函数在主调函数前边进行声明。

2.多文件使用函数的时候,需要对其声明,允许被其他文件调用。

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

4.函数的调用过程

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

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

5.函数的传参

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

递)。

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

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

6.函数的递归调用

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

本质:循环方式

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

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

7.函数与一维整形数组

传参方式:

定义:

返回值 函数名(int数组名[], int len

{

// sizeof(数组名)----sizeof(int *) ---->8字节

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

}

调用:

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

void print_array(int a[], int len)

{

}

print_array(a, len);

数组的数组名是数组的首元素地址。

注意:

1.数组作为函数参数传递时,形参必须要是数组类型:int a[], []中的常量可以有,也可以省略。

2.数组作为函数参数传递时,本质传递的是数组的首元素地址,所以形参本质是一个地址,是数组的起始地址。

3.由于数组名传参本质传递的是首地址,所以必须要传递整形数组的长度。

4.数组作为函数参数传递给被调函数后,函数内部的使用方法和外面使用一样,除了sizeof(数组

名)。

http://www.jsqmd.com/news/1304994/

相关文章:

  • 解锁Edge浏览器隐藏技能:免费不限次将图片公式转LaTeX/Word
  • 免费获取百度文库文档:终极浏览器脚本解决方案
  • 为什么要在信号线上加电阻?看懂波形就懂:反射、振铃、EMI
  • 深入解析CAN接口:从差分信号到多主仲裁的嵌入式通信实战
  • k8s集群serviceIP和podIP不够踩坑记录
  • 绝区零一条龙:3分钟上手,解放双手的全自动游戏助手终极指南
  • 2026中专学校实力口碑榜,备选学生照着选不踩坑,避坑指南 - mypinpai
  • OPC模式解析:一人公司如何实现高效创业
  • 基于ESP32-S3的桌面多功能交互终端设计与实现
  • 深入解析Java内置日志框架JUL:从核心原理到实战配置
  • 完整构建评价指标体系的过程
  • 多智能体协同:用AI编排技术攻克复杂推理任务
  • 非ROOT环境下Frida动态调试Android应用:重打包注入与实战指南
  • 图解TCP报文段结构:从字段拆解到实战抓包分析
  • Cadence Virtuoso SPCODD-409错误排查与修复全攻略
  • 《Flow Of War》如何通过自动化采集与波次防守重构RTS策略体验
  • 11-C语言学习-指针
  • 高达模型进阶指南:ADVANCED HI-ZACK Fully Build 深度解析与实战
  • ML.NET 避坑指南:生产落地常见问题与解决方案
  • yuzu模拟器终极指南:如何在PC上免费畅玩Switch游戏
  • 白盒加密技术解析:从核心原理到DRM与移动支付实战应用
  • Proteus启动报错PRODEFS.INT丢失的完整排查与修复指南
  • AI艺术二维码生成失败率高达67%?资深图像算法专家现场调试178组参数,锁定3个致命配置阈值
  • 2026 年新消息:集宁有实力的切块机定制厂家哪家靠谱,你家厨房那台不起眼的玩意儿,居然能让备菜速度快上整整三倍?-元享蔬菜食品机械 - 企业信息推荐【官方】
  • 终极指南:DXVK 3个核心功能实现Windows游戏在Linux上的完美运行
  • 研发效能复盘:工具化落地的度量与收益评估
  • Allegro PCB设计:彻底掌握env文件配置与快捷键自定义
  • 集成计数器原理与应用:从74LS到74LVC的选型与实战设计
  • AI代码生成实战:从Canvas物理模拟到图形编程新范式
  • 腾讯云CLB HTTPS转发实战:SSL卸载、高可用架构与性能优化指南