news 2026/7/25 9:06:19

C语言基础学习——函数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C语言基础学习——函数

函数定义:实现函数,就是把功能实现

函数调用:就是使用这个功能

计算机模型(函数功能类似):

输入----->处理----->输出


一、函数定义

类型标识符 函数名(形式参数) { 函数体 //声明部分,语句部分 }

1.类型标识符:返回值类型说明符

这个类型说明符用来规定返回值的类型的

基本类型:整型、浮点型、字符型 //注意,数组类型不能用做函数返回值类型

注意:如果带出的结果类型和返回值类型说明符不一致,最终结果以返回值类型说明符为准

2.函数名:是标识符,用来表示是哪个函数

命名规则符合标识符命名规则

3.形式参数(形参):是函数获取数据的入口,函数要处理数据,可以通过形参获得

eg:y=x+2; x就类似于形式参数

实参和形参:

1.要求类型相同,个数匹配

2.实参和形参是一一对应的---位置对应

3.不需要形参

注意:如果函数不需要传入数据可以不写形参 //不写形参或者写成void

4.函数体:实现函数功能的代码

函数定义的位置

1.写在main函数前面

2.写在main函数后面 //写在后面需要提前声明函数

函数声明:复制函数头加上分号


二、函数实现

考虑:

1.功能是否独立单一

2.健壮性 //看后期维护是否简单

3.实用性

流程:

step1:先根据功能确定函数名

step2:从 输入----->处理----->输出 这个模型出发

1.函数需要输入什么---需要哪些数据,数据类型

形参的语法

每个形参都必须指明类型和变量名

类型 变量名1,类型 变量名2,...

eg: int a,int b //注意不能写成int a,b

step3:处理数据(函数体)

eg:int r = a +b;

step4:考虑要不要带出结果

要带出结果---考虑返回值类型说明符--->带出结果的语句

eg:return 表达式;

不带出结果---返回值类型说明符 void(空类型)

eg:add函数

int add(int a,int b) { int ret = a + b; return ret; } //or void add(int a,int b) { int ret = a + b; printf("ret = %d\n",ret); }

三、调用函数

语法:

函数名(实际参数);//实参

实参和形参:

1.要求类型相同,个数匹配

2.实参和形参是一一对应的---位置对应

eg:add(1,2);

注意:函数调用的方式

add(); //函数调用语句

add()+3 //函数调用表达式

printf("%d",add(1,2)); //函数调用充当参数


嵌套调用:

eg:

isLeapYear() { } getDays() { isLeapYear(); }

函数实现调用的本质:通过栈空间,进行现场保护和恢复


C语言中:

程序放到内存中

栈区:

特点:先进后出

平常定义的局部变量都是放在栈空间,局部变量的空间是自动申请,自动释放的

栈空间大小默认为8M

堆区:

特点:大

空间需要程序员手动申请,手动释放

一般数据量比较大的时候使用

全局区(静态区):全局变量

字符串常量区:“hello”

代码区:存放的就是程序代码指令

程序 = 数据+代码


函数的嵌套调用:

特殊的嵌套---递归//自己调用自己

直接递归:

f1(){ f1(); }

间接递归

f2() { f1(); } f1() { f2(); }

递归是一种特殊的循环---调用自身实现循环

使用:有些时候使用循环很复杂,使用递归会简单

eg:累加

int sum(int n) { if(n == 1) { return 1; }else { return sum(i-1)+i; } }

递归思路:倒着来

逻辑: 判断是否得到了递归结束的条件

是:返回结果

否:继续递推下去

注意:递归一次不要使用太多 //会发生段错误(栈空间使用完)


数组作函数参数;

int a[10];

1.数组元素做函数参数

a[0]

void printArray(int a[n])

2.数组本身做函数参数

void printArray(int a[]) //形式上,可以写成数组形式

形式上写成 int a[],本质上是int *a

int *a定位到数组的位置

要访问整个数组要在输入数组长度len

void printArray(int a[],int len) { int i; for(i = 0;i < len;i++) { printf("%d ",a[i]) } }

形参:需要一个数组形式的参数,需要一个数组长度

实参:printArray(a,len); //数组名可以代表数组首元素地址

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/25 9:06:07

Unity资源逆向工程实战:从AssetStudio到UABEA的完整解包方案

1. 项目概述&#xff1a;为什么我们需要Unity资源逆向工程&#xff1f;在游戏开发、独立研究、甚至是内容创作领域&#xff0c;你手头可能有一个非常棒的Unity游戏&#xff0c;想学习它的美术风格、分析它的UI设计&#xff0c;或者提取一段精彩的音效用于自己的非商业项目。但你…

作者头像 李华
网站建设 2026/7/25 9:03:53

企业AI化转型如何破局?iPaaS如何成为智能连接中枢

引言、企业AI化转型的“隐形门槛”&#xff1a;系统孤岛人工智能的浪潮正以前所未有的速度重塑商业世界&#xff0c;从预测性维护到智能客服&#xff0c;从自动化营销到供应链优化&#xff0c;企业急切地希望将AI植入业务流程。然而&#xff0c;一个残酷的现实是&#xff1a;许…

作者头像 李华
网站建设 2026/7/25 9:03:26

视频孪生技术在工业安防中的三维实时解算应用

1. 项目背景与核心价值视频孪生技术作为数字孪生体系的重要分支&#xff0c;正在工业安防领域引发革命性变革。这个项目聚焦于危化品园区和军事储备区这两类对空间安全要求极高的特殊场景&#xff0c;构建了一套名为"镜像视界"的三维实时解算体系。与传统视频监控相比…

作者头像 李华
网站建设 2026/7/25 9:03:08

AI测试智能体技术解析与应用实践

1. 智能测试时代的质量保障变革 三年前我带队执行某金融系统升级项目时&#xff0c;传统测试团队在两周内执行了1.2万条测试用例&#xff0c;仍漏测了支付链路的关键并发问题。如今同样规模的测试任务&#xff0c;我们的AI测试智能体能在36小时内完成全量覆盖&#xff0c;并准确…

作者头像 李华
网站建设 2026/7/25 8:57:47

AI教材编写:解决同质化与查重难题的实战指南

1. AI教材编写现状与核心痛点教材编写领域正在经历一场由AI技术驱动的变革浪潮。根据2023年教育科技行业报告显示&#xff0c;超过67%的高校教师和85%的培训机构已经开始尝试使用AI工具辅助教材编写工作。但实际操作中&#xff0c;编写者普遍面临三大核心挑战&#xff1a;首先是…

作者头像 李华
网站建设 2026/7/25 8:57:16

GLM-5与OpenClaw:开源大模型混合专家架构与课程学习微调技术解析

1. 开源大模型新标杆&#xff1a;GLM-5与OpenClaw技术解析2023年大模型领域最令人振奋的消息&#xff0c;莫过于那个代号"Pony Alpha"的神秘项目突然冲上全球开源榜单第四名。作为长期跟踪AI开源生态的从业者&#xff0c;我第一时间拆解了其技术架构&#xff0c;发现…

作者头像 李华