重点内容:

函数:

定义:

        返回值类型 函数名(参数列表) { //函数体 }

        函数的参数列表中可以有多个数据

        返回值:如果函数没有返回值可以写成void 返回值的作用,函数的结果用来返回给主调函数的,如果主调函数处不需要函数的结果,函数可以没有返回值

        参数:如果函数实现功能时,需要外部传递数据过来,那么函数就需要参数

        写在函数定义位置的参数叫做形式参数,没有实际的意义,只起到占位作用        

        函数的定义不能嵌套        

函数的分类:

        是否需要自己定义:库函数、自定义函数

        是否被调用的角度:主调函数、被调函数

        是否有返回值和参数的角度:

                1.有参有返回值

                2.有参无返回值

                3.无参无返回值

                4.无参有返回值

函数的调用:

        函数名(实际参数);

        实际参数的个数需要和形式参数的个数保持一致

        函数调用的过程就是实参初始化形参的过程

        函数定义的代码不会执行,只有函数被调用时才会执行函数体

        不同函数中的同名变量,互不相关

函数的返回值:

        函数的返回值可以理解为函数调用的结果

函数声明:

        函数定义在函数调用下方时,需要函数声明

        格式: 返回值类型 函数名(参数类型);

        作用: 告诉编译器,函数的参数类型和返回值类型,让编译器可以找到该函数

数组作为函数参数传递:

        所有出现在函数形参位置长得像数组定义的代码,实际上都是指针        

        void fun(int *p,int len) //一维整形数组:形参需要使用同类型的指针变量接收一维整形数组的地址,还需要传一维整型数组的长度(因为在功能函数中不能求出数组的长度)

        void fun(char *p)//一维字符数组:只需要接收一维字符数组的首地址即可,不需要接收长度

        void fun(int (*p)[3],int r,int c)//二维数组作为函数参数传递时,形参需要使用数组指针接收

指针函数:

全局变量和局部变量:

        全局变量:不定义在任何括号中的变量,生命周期和作用域是程序的开始到结束

        局部变量:定义在括号中的变量,生命周期和作用域是括号的开始到结束

如何区分生命周期和作用域:

        生命周期:内存存在的时候

        作用域:可以访问的位置

static的使用:

        static用于局部变量:延长局部变量的生命周期,编程程序的开始到结束

        static修饰全局变量:不能在其他文件中访问该全局变量

        static修饰函数:不能在其他文件中调用函数

指针函数:

        本质是一个函数,返回值是指针(一定是一个有返回值的函数)

        返回值是函数返回到主调函数处的结果

        总结:指针函数可以返回生命周期更长的变量的地址

动态内存分配:

        申请堆区内存        

malloc:

        void *malloc(size_t size);

        功能:从堆区申请指定字节数的空间

        返回值:申请的堆区空间的首地址

        参数:申请多少个Byte

free:

        void free(void *ptr);

        功能:释放堆区内存

        返回值:无

        参数:万能指针,接收任意类型的地址(要释放空间的首地址)

内存泄漏:

        堆区有空间没有在使用,但是空间所有权没有还给内存,导致无法从堆区申请空间,这种情况叫内存泄漏

        如何避免内存泄漏,申请空间之后记得释放

函数指针:

        本质是一个指针,指向一个函数

        int add(int a,int b) { return a+b; } -->int (*p)(int,int) = add;//返回值类型 (*函数指针名)(形参类型); 让指针指向指定返回值类型和参数类型的函数

回调函数:

        函数的其中一个参数是函数指针,由函数指针指向的函数来完成实际的功能

递归函数:

递归的三要素:

        递归出口(没有就是死递归)

        递归逻辑

        递归返回值


作业:

1.赶鸭子问题:一个人赶着鸭子去村庄卖,每经过一个村子卖出一半又一只,经过七个村庄后还剩下两只鸭子,问出发时共赶了多少只鸭子

程序源码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int duck(int day)
{
if(day==7)return 2;
return(duck(day+1)+1)*2;
}
int main(int argc, const char *argv[])
{
printf("%d\n",duck(0));
return 0;
}

2.用递归输出数的二进制

程序源码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int transform(int num)
{
if(num>1)
{
transform(num/2);
}
printf("%d",num%2);
}
int main(int argc, const char *argv[])
{
int num;
printf("请输入需要转换的数:");
scanf("%d",&num);
printf("after transform:");
transform(num);
putchar(10);
return 0;
}

3.递归输出斐波那契数列

程序源码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int Fibonacci(int num)
{
if(num==1||num==2)
{
return 1;
}
return Fibonacci(num-1)+Fibonacci(num-2);
}
int main(int argc, const char *argv[])
{
int num;
printf("请输入打印包含几个元素的斐波那契数列:");
scanf("%d",&num);
printf("Fibonacci=");
for(int i=1;i<=num;i++)
{
printf("%d\t",Fibonacci(i));
}
putchar(10);
return 0;
}

4.整理思维导图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/93748.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/93748.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/93748.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视觉语言导航(7)——VLN的数据集和评估方法 3.2

这是课上做的笔记&#xff0c;因此很多记得比较急&#xff0c;之后会逐步完善&#xff0c;每节课的逻辑流程写在大纲部分。成功率(SR)导航误差(NE)成功加权路径长度&#xff08;SucceedPLength&#xff09;轨迹长度&#xff08;TL&#xff09;先知成功率&#xff08;OS&#xf…

ElasticSearch不同环境同步索引数据

目的&#xff1a;在生产环境把一个索引的数据同步到测试环境中1、在生产环境导出json数据curl -u "adims_user:xkR%cHwR5I9g" -X GET "http://172.18.251.132:9200/unify_info_mb_sp_aggregatetb_0004/_search?scroll1m" -H Content-Type: applicatio…

咨询进阶——解读咨询顾问技能模型

适应人群为咨询行业从业者、咨询团队管理者、想提升咨询技能的职场人士及咨询公司培训人员。主要内容围绕咨询顾问技能模型展开,核心包括五大核心能力(解决问题能力,涵盖洞察力、分析技巧、问题构建等,从识别问题实质到构建新分析方法分层次阐述;管理能力,涉及管理他人与…

2025年- H98-Lc206--51.N皇后(回溯)--Java版

1.题目描述2.思路 二维数组集合 (1&#xff09;N皇后规则 1&#xff09;不能同行&#xff08;同一行不能出现2个皇后&#xff09; 2&#xff09;不能同列&#xff08;同一列不能出现2个皇后&#xff09; 3&#xff09;不能说45度或135度&#xff08;斜对角线不能出现2个皇后&am…

5G + AI + 云:电信技术重塑游戏生态与未来体验

在数字娱乐蓬勃发展的今天&#xff0c;游戏产业已然成为科技创新的前沿阵地。电信网络也经历了一场深刻的蜕变&#xff0c;从最初仅仅是 “内容传输管道”&#xff0c;摇身一变成为与游戏深度绑定的技术共生体。5G 不断刷新着体验的边界&#xff0c;AI 彻底颠覆传统的创作模式&…

【React Hooks】封装的艺术:如何编写高质量的 React 自-定义 Hooks

【React Hooks】封装的艺术&#xff1a;如何编写高质量的 React 自-定义 Hooks 所属专栏&#xff1a; 《前端小技巧集合&#xff1a;让你的代码更优雅高效》 上一篇&#xff1a; 【React State】告别 useState 滥用&#xff1a;何时应该选择 useReducer 作者&#xff1a; 码力…

华为GaussDB的前世今生:国产数据库崛起之路

在数据库领域&#xff0c;华为GaussDB已成为一颗耀眼的明星&#xff0c;为企业核心业务数字化转型提供坚实的数据底座。但这并非一蹴而就&#xff0c;其背后是长达二十余年的技术沉淀、战略投入与持续创新。本文将深入探寻华为GaussDB的历史沿革与核心技术细节&#xff0c;展现…

数据结构初阶(16)排序算法——归并排序

2.4 归并排序 归并排序&#xff08;Merge Sort&#xff09;是基于分治思想的经典排序算法。核心逻辑&#xff1a; 分而治之——把复杂排序问题拆分成简单子问题解决&#xff0c;再合并子问题的结果。联系链表的合并&#xff1a;两个有序链表l1、l2创建新链表l3&#xff08;带头…

MATLAB实现匈牙利算法求解二分图最大匹配

MATLAB实现匈牙利算法求解二分图最大匹配 匈牙利算法&#xff08;也称为Kuhn-Munkres算法&#xff09;是解决二分图最大匹配问题的经典算法。 代码 function [matching, max_match] hungarian_algorithm(adjMatrix)% HUNGARIAN_ALGORITHM 实现匈牙利算法求解二分图最大匹配% 输…

自定义table

更好<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"utf-8"><title>数据表格</title><style>* {margin: 0;padding: 0;box-sizing: border-box;font-size: 14px;}html,body {width: 100%;height: 100%…

面向R语言用户的Highcharts

如果您喜欢使用 R 进行数据科学创建交互式数据可视化&#xff0c;那么请你收藏。今天&#xff0c;我们将使用折线图、柱状图和散点图来可视化资产回报。对于我们的数据&#xff0c;我们将使用以下 5 只 ETF 的 5 年月回报率。 SPY (S&P500 fund)EFA (a non-US equities fun…

【测试工具】OnDo SIP Server--轻松搭建一个语音通话服务器

前言 Ondo SIP Server 是一款基于 SIP(Session Initiation Protocol)协议的服务器软件&#xff0c;主要用于实现 VoIP(Voice over IP)通信&#xff0c;支持语音通话、视频会议等多媒体会话管理&#xff0c;非常适合学习和测试VoIP的基本功能。本文介绍Ondo SIP Server的安装、…

疯狂星期四文案网第42天运营日记

网站运营第42天&#xff0c;点击观站&#xff1a; 疯狂星期四 crazy-thursday.com 全网最全的疯狂星期四文案网站 运营报告 今日访问量 今日搜索引擎收录情况 网站优化点 优化一些发现的seo错误 增加颜文字栏目 增加了一些tag

使用空模型实例调用辅助函数,确定在量化过程中哪些层会被跳过(43)

在Facebook的OPT-350M中,模型的头部(lm_head)与解码器的嵌入标记层(decoder.embed_tokens)共享其权重。 print(model.model.decoder.embed_tokens) print(model.lm_head)输出结果 Embedding(50272, 512

从0-1使用Fastmcp开发一个MCP服务,并部署到阿里云百炼 -持续更新中

目的&#xff1a; 在本地使用fastmcp开发一个mcp,然后注册到阿里云的百炼里面。实现在百炼里面创建智能体的时候直接引用自己开发的MCP 已完成&#xff1a;本地环境安装 待完成&#xff1a; 1.根据需求实现一个MCP中可以调用某应用的多个API即 mcp.tool()、mcp.prompt()、接入大…

设计模式之汇总

设计模式 零、设计原则 0.1 单一职责 0.2 接口隔离 0.3 开闭原则 0.4 依赖倒置0.5 迪米特法则&#xff0c;最小知道原则用户关机 只和朋友通信 朋友条件&#xff1a; 1&#xff09;当前对象本身&#xff08;this&#xff09; 2&#xff09;以参量形式传入到当前对象方法中的对象…

第6章 Decoder与Encoder核心组件

前言 Netty从底层Java通道读取ByteBuf二进制数据&#xff0c;传入Netty通道的流水线&#xff0c;随后开始入站处理。在入站处理过程中&#xff0c;需要将ByteBuf二进制类型解码成Java POJO对象。这个解码过程可以通过Netty的Decoder&#xff08;解码器&#xff09;去完成。 在…

[已解决]当启动 Spring Boot 应用时出现 Using generated security password xxx提示

当启动 Spring Boot 应用时出现 Using generated security password xxx提示当启动 Spring Boot 应用时出现 Using generated security password xxx提示&#xff0c;这是 Spring Security 自动配置的默认行为&#xff0c;通常发生在你​​未自定义安全配置​​但引入了 Spring…

自动分析需求,PRD 生成只需 SOLO 一步!

资料来源&#xff1a;火山引擎-开发者社区 写不清需求&#xff1f;PRD 难产&#xff1f;开发总跑偏&#xff1f;这些痛点&#xff0c;SOLO 来解决。 TRAE SOLO 是行业首个 Context Engineer。它不止协助编码&#xff0c;更能基于精准上下文理解和工具调用&#xff0c;从构思、…

物联网软件开发过程中,数据流图(DFD),用例图,类图,活动图,序列图,状态图,实体关系图(ERD),BPMN(业务流程建模)详解分析

概述软件开发过程中&#xff0c;特别是在物联网&#xff08;IoT&#xff09;场景中&#xff0c;数据流图&#xff08;DFD&#xff09;、UML图&#xff08;包括用例图、类图、活动图、序列图、状态图&#xff09;、实体关系图&#xff08;ERD&#xff09;和业务流程建模&#xf…