黑马程序员——C语言笔记之函数

黑马程序员——C语言基础教程笔记 黑马程序员——C语言基础教程笔记 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 文章目录黑马程序员——C语言基础教程笔记前言Day-11.C语言概论1.1 什么是C语言1.1.1 C语言特点1.1.2 学习C语言的理由1.1.3 发展方向1.1.4 C语言中的关键字2.3.Day-21.引入库2.读入数据总结 前言 研三了,作为一枚菜鸡硕,为了找工作,只好重刷C语言。以下笔记是我在“黑马程序员:http://yun. 阅读详情

------- android培训、java培训、iOS培训、.Net培训、期待与您交流! ----------

1、函数的概念

完成特定功能的代码段,它也是组成我们C语言源程序的基本单位

优点:

1)高程序的可读性

2)可以高开发的效率

3)提高代码重用性 

2、函数的定义格式:

返回值 函数名(形参列表){

函数体;

//return

}

按照有参数和返回值可分为四种:

有参无返回值:void test(int x,float y){ }

无参无返回值:void test1(){ }

有参有返回值:int max(int x,int y){ return x>y?x:y; }

无参有返回值:int test2(){ return 10;}

3、函数的参数

1)形参和实参

形参:在定义函数的时候,函数名后面小括号中的参数

void test(int x,float y){ } 

实参:调用函数的时候传递的参数

max(56,78); //56、78就是两个实际参数

2)参数的传递过程实质是,将实参的值拷贝一份放到函数形参中

4、函数的返回值

主调函数:

A、B两个函数 ,如果在A中调用了B,A为主调函数,B为被调函数。

被调函数:

被调函数返回给主调函数的值叫做函数的返回值
使用return 关键字进行返回

1) return 0; return (0);

2) return a+b; return a>b?a:b;

3) 如果函数的返回值是 void return ;(程序返回了,不再向下执行)

4) 函数中可以有多个return,但是只有一个起作用。

5、函数的调用

1)函数的声明:

为什么要进行声明?

类似于变量的使用,我们要使用函数,就应该先定义函数,编译器不知道我们是否已经定义了某个函数,为了防止编译器编译的时候报错(函数调用),所以要告诉编译器,我已经定义了哪些函数。

原则:

在调用函数之前,进行该函数的声明。

声明的方法:

技巧:复制函数的头部,加上分号,写在调用方法之前

int max(int x,int y); //声明

2)函数的调用:

格式:函数名(实参列表);

max(56,78); //调用

6、递归函数

一个函数在它的函数体内调用它自身称之为递归函数。

构成条件:

1)自己调用自己

2)存在一个条件能够让递归结束

3)能够找到一个规律,让要解决的问题的规模缩小

递归函数的执行有两个阶段:

1)递推阶段:问题规模缩小的过程

2)回归迭代:迭代计算值的过程

递归的优点和缺点:

优点:遇到问题规模能够缩小,而且有规律的问题的时候,代码比较简洁。

缺点:太耗内存

建议:在程序中不能用太多 

#include <stdio.h>
//用递归法求n得阶乘
// 5!
// 5*4!
// 第一个:递归退出的条件:1! = 1
// 第二个:n! = (n-1)!*n
// 第三个:自己调用自己
int jieCheng(int n){
    int ji;
    //判断n==1,如果n=1,阶乘的结果就是1
    if (n==1) {
        ji = 1;
    }else{
        //如果n != 1,前一个数的阶乘乘以当前的n的值
        ji = jieCheng(n-1)*n;
    }
    return ji;
}
//求 x的y次方
int xy(int x,int y){
    int ji;
    //判断y==1
    if (y==1) {
        ji = x;
    }else{
        // 如果y !=1 此时,计算x的y-1次方 乘以 x
        // x y   x y-1 *x
        // 2^3   2^2   *2
        ji = xy(x,y-1)*x;  
    }
    return ji;
}
int main(int argc, const char * argv[]) {
//    int ji = jieCheng(8);
    int ji = xy(2,7);
    printf("ji = %d\n",ji);
    return 0;
}


HDMI与DisplayPort混搭方案:如何用Xilinx Video PHY Controller实现多协议视频接口转换 本文详细解析了如何利用Xilinx Video PHY Controller IP核实现HDMI与DisplayPort协议转换,涵盖混合视频接口架构设计、GT收发器动态重配置策略及跨协议时钟域处理方案。通过实战案例和配置技巧,帮助开发者构建高性能多协议视频转换系统,适用于医疗影像、工业控制等场景。 阅读详情

相关推荐

ESP32脑机接口开发板:EEG信号采集与应用开发指南

脑机接口(BCI)技术通过采集脑电图(EEG)信号实现人机交互,其核心在于高精度生物电信号采集与实时处理。基于ESP32微控制器的开发平台结合专业级ADS1299 ADC芯片,可构建8通道EEG信号采集系统,支持250SPS采样率与可编程增益。这种嵌入式解决方案在科研教育领域具有显著优势,既能满足信号质量要求,又大幅降低开发门槛。典型应用包括实时脑电波可视化、注意力检测等BCI场景,通过Python生态工具链(如BrainFlow、LSL)可快速实现数据处理。开发时需注意电极阻抗控制(<10kΩ)和50/6

weixin_42518874的博客 344

在C语言中,程序的执行总是从main()函数开始。main()函数是C程序的入口点,它是程序执行的起点

当程序执行到函数调用时,它会跳转到该函数的代码块并执行函数中的代码,直到函数执行完毕或遇到return语句返回main()函数或其他函数。当函数定义中包含指针参数时,函数内部可以对指针指向的变量进行修改,从而改变调用代码中的变量值。当函数执行完毕时,控制权将返回调用该函数的代码行,程序将继续执行。代码区用于存储程序的二进制代码,数据区用于存储初始化的全局变量和静态变量,而BSS区用于存储未初始化的全局变量和静态变量。总之,C语言的执行过程是从main()函数开始,按照代码定义的顺序逐行执行代码。

博客域名:borter.blog.youkuaiyun.com 5467

基于CubeMX与lwip的STM32轻量级HTTP服务器搭建及VSCode高效开发指南

本文详细介绍了如何在STM32单片机上,利用STM32CubeMX图形化配置工具和轻量级TCP/IP协议栈lwIP,快速搭建一个轻量级HTTP服务器。通过结合VSCode的高效代码编辑能力,提供了一套从硬件连接到动态网页交互(SSI/CGI)的完整开发指南,旨在为嵌入式设备提供零成本、跨平台的Web交互界面。

weixin_29163857的博客 582

C/C++函数调用中的主调函数、被调函数、形参与实参

1.主调函数与被调函数 这是一个相对的概念,调用者叫主调函数,被调用者叫被调函数,一个函数可以是主调函数也可以是被调函数。 2.形参与实参 形式参数(简称“形参”) 在定义函数时函数名后面括号中的变量称为“形式参数”。 实际参数(简称“实参”) 在主调函数中调用被调函数时,函数名后面括号中的参数称为“实际参数”。实际参数可以是常量、变量或表达式。 3.函数调用 在函数调用过程中,系...

52赫兹问候的博客 1万+

ipsec 加密流程(一):ipsec策略匹配

《openswan》专栏系列文章主要是记录openswan源码学习过程中的笔记。 Author: Toney Email: vip_13031075266@163.com Date: 2020.11.22 Copyright: 未经同意不得转载!!! Version:2.6.51.5 Reference:https://download.openswan.org/openswan/ 1. ipsec策略匹配流程(ipsec_tunnel_start_xmit) 注:open...

遇见你是我最美丽的意外 9121

深入解析UVM寄存器模型:reg2bus与bus2reg的隐式调用机制

本文深入解析了UVM寄存器模型中reg2bus与bus2reg函数的隐式调用机制。通过追踪一次寄存器访问的完整旅程,揭示了这两个关键函数是如何在uvm_reg_map和uvm_reg_predictor中被框架自动调用的,从而在抽象的寄存器操作与具体总线事务之间完成转换,并实现镜像值的自动更新。掌握此机制是高效调试和灵活应用UVM寄存器模型的基础。

weixin_29211309的博客 441

c语言函数调用题文本文库,c语言-第8章--函数习题.doc

c语言-第8章--函数习题.doc下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。2.下载的文档,不会出现我们的网址水印。3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。文档包含非法信息?点此举报后获取现金奖励!下载文档到电脑,查找使用更方便20积分还剩页未读,继续阅读关...

weixin_33520849的博客 660

WEB浏览器视频流播放方案

基于Media Source Extensions播放视频流 浏览器播放视频的几种方法 一、H5 video标签 在浏览器播放视频,可以使用HTML5原生的video标签。但其播放的格式使用一定限制的,目前video只支持三种格式WebM、Ogg、MP4。 WebM:WebM 文件使用 VP8 视频编解码器和 Vorbis 音频编解码器 Ogg :Ogg 文件使用 Theora 视频编解码器和 Vorbis音频编解码器 MP4: MPEG 4文件使用 H264 视频编解码器和AAC音频编解码器 上面三种

machh的专栏 2381

c语言中的主调函数与被调函数

被调用的函数为被调函数,调用该函数的函数为主调函数。。 这样说可能让人一脸懵逼 举例:   main()   { float a,b;   int c;   scanf("%f,%f",&a,&b);   c=max(a,b);   printf(“Max is %d\n”,c);   } int max(float x, float y)   { float z;   z...

爱党人士 3万+

基于matlab实现的水果识别系统设计

本项目针对多种常见水果混合的图像,利用 Matlab 软件,对水果的识别进行研究。根据水果和背景的差别选取阈值,对去噪增强对比度后的图像进行二值化处理。再对图像进行边缘检测,选定连通区域,标记后再对不同种水果的颜色,形状,大小等特征进行快速识别水果,从而实现对水果的正确分拣。:水果识别、MATLAB、数字图像处理。

热情、奔放、快乐编程! 4854

DSI3接口介绍

DSI3(distributed system interface)分布式系统接口,是一种强大且通用的总线协议,旨在将多个遥感器和执行器互连到中央控制模块。在单总线中集成了电压信号、电流信号还有电源,甚至引用了3位状态机概念(反向数据),从逻辑0/1扩展到了0/1/2。

Airer_00的博客 4311

小用lambda函数

当函数只有一句代码,并且含有一个返回值时可以利用lambda函数 print((lambda a, b = 1: a + b)(1, 2)) 此时输出为3 a和b相当于python函数里的参数

weixin_48445640的博客 686

使用Simulink对液流电池在微电网中的动态响应进行建模与仿真

本文介绍了使用Simulink对液流电池在微电网中的动态响应进行建模与仿真的方法。通过搭建包含液流电池、双向DC-DC变换器、分布式能源和负载的微电网模型,并设计基于SOC的控制器,详细说明了从模型创建到仿真运行的完整流程。重点分析了液流电池在不同负载条件下的动态特性,评估了系统响应速度、充放电效率和稳定性等性能指标。该仿真方法为验证液流电池在微电网中的应用提供有效工具,有助于优化参数设计和提升系统可靠性。

amy_mhd的博客 136

黑马程序员—C语言笔记—函数

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

lan_wen963的专栏 788

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

黑马程序员——C语言笔记之scanf函数及使用注意事项

------- android培训、java培训、期待与您交流! ---------- 1、scanf函数(阻塞式函数) scanf函数原型包含在标准输入输出头文件“stdio.h”中,用于接受键盘输入的内容。 格式:scanf("格式控制字符串",输入项地址列表); scanf函数格式控制符:  使用scanf函数时不能指定%m.n格式,只能指定%m格式,如

林涵的博客 1163

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【黑马程序员】C语言学习笔记之函数(八)

--------------------------------------------IOS期待与您交流!-------------------------------------------- 一、基本概念 1.什么是函数 任何一个C语言程序都是由一个或者多个程序段(小程序)构成的,每个程序段都有自己的功能,我们一般称这些程序段为“函数”。所以,你可以说C语言程序是由函数构成的。

kqygww的专栏 1076

黑马程序员——C语言函数的返回值笔记和练习题

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------1)、函数的返回值要点:1. 函数的值只能通过return语句返回主调函数。return语句的一般形式为: return 表达式 或者为: return (表达式);2. 函数值的类型和函数定义中函数的类型应保持一致。如果两者不一致,则以函数返回类型为准,自动进行类型转换。2)、函数的形参与实参:

caizexu12345的博客 823

黑马程序员----C 语言学习笔记之指针函数与函数指针

一、指针函数 1.返回指针的函数称为指针函数   2.指针函数的定义 一般形式为: 类型说明符 *函数名(形参表){ /*函数体*/ } 例如: //返回两个数中最大数的地址 int *sum(int a, int b){ return a > b ?&a : &b; } int *sum2(int *a, int *b){ ret

chunhuayun的专栏 330

黑马程序员----C语言学习笔记之函数

C语言之函数 1.函数的概述 C源程序是由函数组成的。可以说C程序的全部工作都是由各种各样的函数完成的,所以也把C语言称为函数式语言。 2.函数的分类 2.1从函数定义的角度看,函数可分为库函数和用户自定义函数两种 库函数:由C系统提供,用户无须定义,也不低在程序中左类型说明,只需要在程序前包含有该函数原型的头文件即可直接调用。如:printf,scanf等 用户自定义函数:由用户按需

chunhuayun的专栏 619

黑马程序员-ios学习笔记-C语言scanf函数

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 越先定义的变量地址越大 内存寻址有大到小,优先分配内存地址比较大的字节给变量 取得变量地址;&变量名 输出变量地址:%p &:是一个地址运算符,是为了取得变量的地址 %p:用来输出地址 printf(“a的地址是:%p”,&a); printf函数用来输出 scanf函数用来输

lengnuanzizhi365的专栏 563

黑马程序员——C语言笔记之printf函数与格式控制符

------- android培训、java培训、期待与您交流! ---------- 1、printf函数介绍 printf函数是一个标准库函数,能够以精确的格式输出程序运算的结果。  printf函数的调用格式为:printf("格式控制字符串",输出项列表); 2、格式控制符使用说明 printf的格式控制的完整格式: 1. %:表示格式说明的起始符号,不可缺

林涵的博客 1009

12-黑马程序员------C 语言学习笔记--- C语言指针与函数

黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ------- 六 指针与函数 01 指针作为函数参数 指针作为实参时,与普通变量一样,也是采用单向的值传递方式,即将指针变量的值(该值是一个地址)传递给被调函数的形参...

weixin_34358092的博客 120

黑马程序员——C语言学习笔记02 控制语句:分支、跳转、循环和函数一些需要注意的问题

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 1、多个连续的if else if else if 的执行顺序: 从上往下执行,知道某个if判断成立,就结束判断,不会继续下面的判断。 2、if和switch中变量的作用域问题: C编译器判断变量作用域是通过大括号来判断的,所以在if或switch后面直接定义新的变量,而不用大括

gjgoodjob271的博客 579

10-黑马程序员------C 语言学习笔记--- C语言函数的声明和原型

黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ------- 三 函数的声明和原型 01 在函数调用之前,应该对所调用函数进行声明,指出该函数的返回值类型及形参的个数和类型。 函数声明的一般格式: 函数返回值类型...

weixin_34292959的博客 123

黑马程序员-C语言学习笔记-----内存分配函数(malloc、calloc、realloc)

了解malloc、calloc、realloc动态内存分配函数 三个函数在stdlib.h中的声明如下:   void* realloc(void* ptr, unsigned newsize);     void* malloc(unsigned size);     void* calloc(size_t nelem, size_t elsize); (1)malloc函数:

wenfeng340的专栏 586

【黑马程序员】C语言学习笔记(2) - 指针

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------     指针是C语言提供的一种数据结构,其功能与一般的数据类型不一样的地方就在于它存储的是变量的内存地址。我对指针的概念理解如下图所示: 对应上图我们可以使用如下的代码来解释: #include int main() { int a = 11; int *p =

Little__Coder的博客 666

《黑马程序员C++》课程笔记总结

我的小站——半生瓜のblog 黑马程序员C++视频——黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难 笔记列表&对应视频 基础部分(1-83)——如果你准备学习C++,并且有C语言的基础,我希望你能简单的过一遍知识点。 核心部分(84-146)——C++核心编程部分-内存分区模型-引用-函数提高-类与对象-文件操作 案例1(147-166)——职工管理系统——C++实现职工管理系统 进阶部分(167-263)——C++提高编程部分-泛型编程-STL 案例2(264-281)—.

半生瓜のblog 19万+
上一篇: 黑马程序员——C语言笔记之循环结构
下一篇: 黑马程序员——C语言笔记之预处理指令和模块化编程
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值