C语言知识点总结07-函数01

嵌入式学习-01C语言day07 相比于 scanf(),多了一个参数,第一个参数是要提取数据的字符串,后面参数与 scanf() 一致。局部变量、局部数组等通常存储在栈(Stack)区,这些局部数据的内存分配和释放是自动管理的,它们的生命周期受限于其定义的函数或块级作用域,当函数返回或块级作用域结束时,这些变量的内存会被自动释放。1,1,2,3,5,8,13…块级作用域是C99标准引入的概念,在代码块(分支语句、循环语句等)中定义的变量、标识符常量、数组等具有块级作用域,只有在该代码块内部才能被访问,代码块通常具有花括号 {} 结构。 阅读详情
1.函数的基本概念

数是一种可重复使用的代码块,用于执行特定的任务或操作。函数允许我们将代码逻辑组织成独立的单元,从而提高了代码的可读性、可维护性和重用性。一个C程序可以由一个或多个源文件构成(C文件扩展名是“.c”),一个源文件是一个编译单位。一个源文件可以由若干个函数构成,函数之间可以相互调用。也就是说,函数是C程序基本的组成单位。

1.1函数的作用

封装功能,将一个完整的功能封装成函数,提高代码的结构化和复用性。

代码模块化,将程序按照功能拆分成若干模块单元,有助于降低复杂度。

增强可维护性,如果需要修改某项功能,只需要调整对应的函数代码。

隔离细节,通过函数调用可以隐藏实现细节,只关心输入输出。

1.2函数的分类
(1)库函数,也称为标准函数,是由C系统提供的,用户不必自己定义,可直接使用它们,使用库函数,必须包含 #include 对应的头文件。
(2)自定义函数,解决具体需求而自己定义的函数,需先定义再使用。
1.3函数的基本语法

返回类型 函数名(参数列表)

{

    函数体语句1;

    函数体语句2;

    … 函数体语句n;

    return 返回值;

1.3.1函数语法的组成部分

函数名:函数被调用时使用的名字,函数名要符合标识符规范。

函数体:函数中所包含的代码块,用于实现函数的具体功能和操作。

参数:用于接收调用函数时传递进来的值。

返回值:函数执行完毕后,从函数传回到调用点的值,返回值的类型要与函数名前面的返回类型对应,如果没有返回值,返回类型可以写 void。

1.3.2示例
#include <stdio.h>

// 声明函数
void func()
{
    printf("hello func\n");
}

// 实现两个数字相减
int minus(int m, int n)
{
    return m - n;
}

// 取两个数字中的最大值
int max(int a, int b)
{
    int c;
    c = a > b ? a : b;
    return c;
}
int main()
{
    return 0;
}
1.3.3函数不能嵌套声明

C程序中的所有函数都是互相独立的,一个函数并不从属于另一个函数,即函数不能嵌套声明。

//错误演示

int func1(int a,int b) //第1个函数的定义

{  

    ...

    int func2(int c,int d)  //第2个函数的定义

    {  

       ...

    }

    ...

}

1.4调用函数

函数名后面加上圆括号即是函数的调用,参数写在小括号中,函数每调用一次,函数体语句都会执行一遍。

#include <stdio.h>

// 声明函数
void func()
{
    printf("hello func\n");
}

// 实现两个数字相减
int minus(int m, int n)
{
    return m - n;
}

// 取两个数字中的最大值
int max(int a, int b)
{
    int c;
    c = a > b ? a : b;
    return c;
}

// 主函数
int main()
{
    // 函数的调用
    func();
    func();

    printf("17-90的结果:%d\n", minus(17, 90));
    printf("21-180的结果:%d\n", minus(21, 180));
    printf("12和16之间较大的是:%d\n", max(12, 16));
    printf("45和31之间较大的是:%d\n", max(45, 31));

    return 0;
}
/*
输出结果:
hello func
hello func
17-90的结果:-73
21-180的结果:-159
12和16之间较大的是:16*/
1.5函数的返回值

函数调用后数能得到一个确定的值,这就是函数的返回值,返回值常常是一个计算的结果,或是用来作为判断函数执行状态的标记。

函数返回值分为以下三种情况:

(1)无返回值类型:针对函数无返回值或明确不需返回值的情况,使用void(即空类型)表示。

(2)有返回值类型:指明具体的类型,比如,int、float、char等。

(3)需要在函数体内与return语句搭配使用。如果返回值类型不是void,但函数中没有return语句,则函数会返回一个不确定的值。

1.6函数的参数

函数的参数分为形参与实参:

  • 形参:在定义函数时,函数名后面括号()中声明的变量称为形式参数,简称形参。
  • 实参: 在调用函数时,函数名后面括号()中的使用的常量、变量、表达式称为实际参数,简称实参。

注意:实参的数量要与形参的数量一致,否则报错。

#include <stdio.h>

// x 和 y 即为形参
int func(int x, int y)
{
    return x + y;
}

int main()
{
    // 3 和 5 即为实参
    int sum = func(3, 5);
    printf("%d \n", sum); // 8;

    // 如果实参数量如形参不一致 会报错
    // func(100, 299, 300);
    // func(100);

    return 0;
}
C语言大千世界————01开篇之函数别名 佛教说明世界组织的情形。每一小世界,其形式皆同,中央有须弥山,透过大海,矗立在地轮上,地轮之下为金轮,再下为火轮,再下为风轮,风轮之外便是虚空。 须弥山上下皆大,中央独小,日月即在山腰,四王天居山腰四面,忉利天在山顶,在忉利天的上空有六欲天,再上则为色界十八天,及无色界四天 阅读详情

相关推荐

三级等保网络拓扑图实战:从零搭建符合标准的医院安全架构

本文详细阐述了如何从零开始设计并搭建符合三级等保标准的医院网络安全架构。文章基于“一个中心,三重防护”的核心框架,深入解析了医院网络分区设计、安全域划分、关键安全设备选型与配置等实战要点,并提供了绘制专业网络拓扑图的技巧与等保测评准备指南,旨在帮助医院IT人员系统化地构建既合规又实用的纵深防御体系。

weixin_29326909的博客 504

自定义函数

函数参数、 传值调用、 传址调用、 函数递归、函数嵌套、函数链式访问、

m0_50816232的博客 1万+

Python 实战:高效绕过 reCAPTCHA v3 的自动化策略

本文深入探讨了使用Python高效绕过reCAPTCHA v3验证的实战策略。文章首先解析了reCAPTCHA v3无感验证的评分机制,随后详细介绍了两种核心解决方案:一是利用CapSolver等专业API服务直接获取有效token,二是通过Playwright模拟真人浏览器行为以提升评分。文中提供了从定位关键参数到代码实现的完整流程,并强调了合规操作与请求频率控制的重要性,为自动化开发者提供了切实可行的技术指南。

weixin_29057065的博客 489

c语言函数详解1——自定义函数

自定义程序的讲解和一些规范

Solaku7的博客 2万+

永磁同步电机解耦控制实战:从电流反馈到内模解耦的算法演进与选型指南

本文深入探讨了永磁同步电机高性能驱动中的核心挑战——交叉耦合问题,并对比分析了电流反馈解耦和内模解耦两大主流算法的原理、性能与适用场景。文章指出,电流反馈解耦动态响应快但对参数敏感,内模解耦鲁棒性更强但略有滞后,为工程师在不同应用需求下的算法选型提供了清晰的实战指南。

weixin_29039773的博客 265

Cluster Computing期刊投稿实战:从格式调整到技术检查的全流程解析

本文详细解析了向Cluster Computing期刊投稿的全流程,涵盖心理准备、格式调整、参考文献处理及投稿系统操作。重点介绍了如何利用Springer LaTeX模板,特别是使用picins宏包解决作者简介排版难题,并强调了将BibTeX转换为BBL文件以避免技术审查陷阱,为研究者提供了一份实用的投稿指南。

weixin_28432777的博客 668

C语言中常用的函数

C语言中常用的函数1、putchar()函数2、getchar()函数3、pow( a , b )函数4、sqrt( a )函数5、fabs(a)函数6、puts(字符数组)函数——输出字符串的函数7、gets(字符数组)——输入字符串的函数8、strcat(a , b)函数——字符串连接函数9、strcpy函数——字符串复制函数10、strncpy函数——字符串复制函数11、strcmp函数——字符串比较函数12、strlen函数——测量字符串长度的函数13、strlwr函数——转换为小写的函数14、

hey,欢迎浏览我的博客,希望能给你提供帮助。 3万+

【AI气象6】Skilful nowcasting of extreme precipitation with NowcastNet

极端降水是气象灾害的重要因素,因此迫切需要通过高分辨率、长时间预报和局部细节的精准短期预报来减轻其社会经济影响。当前的方法存在模糊、衰减、强度或位置误差,基于物理的数值方法在捕捉关键的混沌动态(如对流起始)时面临挑战,而数据驱动的学习方法则未能遵循内在的物理法则(如平流守恒)。我们提出了 NowcastNet,这是一种针对极端降水的非线性短期预报模型,将物理演变方案与条件学习方法统一到一个端到端的神经网络框架中,通过优化预测误差进行训练。基于来自美国和中国的雷达观测数据,我们的模型能够生成物理上合理的降水短

weixin_51473374的博客 2325

【c语言的自定义函数

其实 static 修饰函数和 static 修饰全局变量是⼀模⼀样的,⼀个函数在整个⼯程都可以使用, 被static修饰后,只能在本文件内部使用,其他文件无法正常的链接使用了。但是全局变量被 static 修饰之后,外部链接属性就变成了内部链接属性,只能在自己所在的源 ⽂件内部使用了,其他源文件,即使声明了,也是无法正常使用的。static修饰局部变量改变了变量的生命周期,生命周期改变的本质是改变了变量的存储类型,本 来⼀个局部变量是存储在内存的栈区的,但是被 static 修饰后存储到了静态区。

2301_81510374的博客 4462

融合双主干网络提升YOLOv8性能一种基于SOTA思想的目标检测改进

YOLOv8采用了单一的主干网络进行特征提取,通常是基于CSPDarknet作为骨干网络,在目标检测过程中通过不同的卷积层提取不同尺度的信息。虽然这种设计在大多数应用场景下表现出色,但在面对复杂背景、细节丰富的物体或小物体检测时,YOLOv8有时难以保持良好的精度。在本文中,我们提出了一种基于双主干网络的YOLOv8改进方案,通过结合先进的SOTA思想,全面提升了YOLOv8在目标检测任务中的表现。双主干网络架构。

博客 1154

【OpenCV-Python】——图像处理基础&读写及显示图像&读写及播放视频&灰度图/彩色图/图像通道操作、运算

在Python中,OpenCV使用NumPy数组存储图像,Numpy是使用Python进行数组计算的软件包,提供强大的N维数组对象,支持复杂的广播功能(数组运算),集成了C/C++和Fortran代码工具,支持线性代数、傅里叶变换和随机数等特性,还可作为通用数据的高效多维容器,如在OpenCV中显示图像。Numpy的知识点见数据处理专栏,主要包括数据类型、创建数组、数组形状、索引切片和迭代、数组运算等。作为初学者,里面可能有总结不全,后续深入学习后会改善文章!下次学习图形用户界面!

weixin_51658186的博客 2084

C语言自定义函数

{//函数体}// 函数原型int main(){}// 函数定义{//函数实现的代码}

qq_74184107的博客 4951

PCL 计算点云法向量并显示【2026最新版】

PCL计算法向量并显示,用OMP进行计算加速以及法线定向的深层次理解、操作。博客长期更新,本文最近更新时间为:2026年1月28日。

点云侠的博客 32万+

学习 C 语言看这一篇就够了!吐血整理 C 语言所有知识点

C 语言的知识点汇总 文中的图片上有我公众号的水印,我本来也不想加,因为图片是很早之前做的。本来也可以不用加,但是我感觉加上更有利于读者理解知识点,希望审核大大不要限流。 兄弟们,为了你们,我也是拼了,希望大家能给我点个赞,转发一下,希望更多人能获益。我也算没白码这么多字。 我们以 《C 语言程序设计 —— 现代方法》 这本书的目录为例,给大家列出主要的知识点。大部分知识点的文章都已经整理,后面还会继续更新。 下面是 C 语言 全部知识点 的汇总,6.4 M 的思维导图,太大了就不放在这里了,下载链接在文末

qq_46275568的博客 3639

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C语言常用库函数总结

C语言常用计算相关库函数、字符串操作库函数;

shn249510的博客 8494

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【C语言】C语言字符串 | 关于String | 通过国外教材讲解字符串 | 专栏遗漏知识点补充

考虑到之前在专栏中讲字符串的时候有些知识点没有详细地讲解,所以本篇是对字符串相关的知识点的补充篇!例如 %s 输出左对齐右对齐,限制格数等知识,在那个专栏的部分代码中出现了,但只是用注释简单的提了下,并没有详细地讲,所以本篇将针对部分遗漏的知识点进行补充和巩固。本篇通过C语言教材《The C Programming Language》作为参考进行讲解。

有道无术, 术尚可求。有术无道, 止于术。 3104

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

[C语言]一、C语言基础(01)

Code::Block是一个免费的跨平台IDE,它支持C、C++和Fortan程序的开发。Code::Block的最大特点是它支持通过插件的方式对IDE自身功能进行扩展,这使得Code::Block具有很强的灵活性,方便用户使用。Visual C++ 2010,简称VC2010,是由微软开发的独立的、免费的 C/C++ 编译工具,与Visual Basic等并列,最后微软将它们整合在一起组成了Visual Studio。

weixin_44428807的博客 3143

01初识C语言

这篇博客将带大家初步认识C语言,由于仅仅是初步认识,因此具体内容并没有进行深度的说明讲解,具体更详细的内容将在之后的博客中单独讲解。 文章目录什么是C语言什么是计算机编程语言什么是底层开发计算机语言的发展过程什么是编译器ASCII码表第一个C语言程序创建工程 以VS2019为例主函数数据类型不同数据类型的大小数据类型的输出格式变量、常量定义变量的方法局部变量和全局变量变量的作用域和生命周期作用域生命周期常量字符串+转义字符+注释字符串转义字符补齐字符注释选择语句循环语句函数数组数组的定义数组的使用操作符常

精致的灰的博客 2388

C语言练习01

1、下面程序的输出是___D___ #include<stdio.h> void main() { int k=11; printf("k=%d,k=%o,k=%x\n",k,k,k); } A) k=11,k=12,k=11 B) k=11,k=13,k=13 C) k=11,k=013,k=0xb D) k=11,k=13,k=b 2、在下列选项中,不正确的赋值语句是___D___ A) ++t; B) n1=(n2=(n3=0)); C) k=i=j; D) a=b+c=1;

__Miracle__ 8123

C语言——函数

函数是能实现一定功能的,独立的代码模块。

qixi_ao的博客 1756

C语言函数之—函数的分类

库函数和自定义函数

qq_74009838的博客 4229

【C语言知识点01】C语言基础知识

C语言的特点不包括能够编制出功能复杂的程序 C语言程序的基本单位是函数 字符型表示’D’ sqrt()函数作用是求一个非负实数的平方根 y++,后缀式,引用后+1 putchar函数 可以向终端输出一个字符或字符型变量值 当数据宽度小于实际数据宽度时,不生效; 例子: int a=12345; printf(”%2d\n”, a); 结果:12345 scanf()函数不可对其输入的精度做限制 ...

网络工程 1439

函数c语言_C语言函数习题及答案

点击蓝字关注我们FOLLOW US1.这下面程序的正确运行结果是(C)。void fun(int s[],int n1,int n2){ int i,j,t; i=n1; j=n2; while (i { t=s[i];s[i]=s[j]; s[j]=t; i++;j--; }}int main(){int a[10]={1,...

weixin_42355387的博客 7441

【C语言入门学习】函数01

子程序在计算机科学中,子程序(英语:Subroutine, procedure, function, routine, method,subprogram, callable unit),是一个大型程序中的某部分代码, 由一个或多个语句块组成。它负责完成某项特定任务,而且相较于其他代 码,具备相对的独立性。一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏。这些代码通常被集成为软件库。由我们程序员自由设计函数,能够更好地加深我们的代码编写思维,更加灵活地编写程序,使我们地代码具有更大地发挥空间。

qq_63100905的博客 993

C 语言核心知识点详解:函数调用、数组传参与变量特性

本文主要介绍了C语言中函数的使用及相关概念,包括函数的嵌套调用、递归调用、数组作为函数参数、变量的作用域和生命周期等内容。函数嵌套调用允许在一个函数内调用其他函数,但禁止嵌套定义函数。递归调用通过栈帧实现函数自身调用,需要注意设置终止条件避免死循环。数组作为函数参数时实际传递的是首地址,形参修改会影响实参。变量按作用域分为全局变量和局部变量,按存储类型分为auto、static、extern等类型,不同存储类型影响变量的生命周期和作用范围。文章通过多个案例(如判断素数、查找数组元素、递归求年龄阶乘、快速排序

2302_79437784的博客 1484

C语言 01 概述

C 语言是一门的计算机编程语言,于诞生于贝尔实验室。C 语言是(Dennis Ritchie)以 B 语言为基础发展而来,因此他被称为。C 语言为什么命名为?1967 年,剑桥大学的 Martin Richards 对进行了简化,于是产生了。1969 年,美国贝尔实验室的(Ken Thompson),以 BCPL 语言为基础,设计出很简单且很接近硬件的(取 BCPL 的首字母),并且用 B 语言写了初版。1972 年,美国贝尔实验室的。

天河有尽后为涯,星海无边前作岸。 1030
上一篇: C语言知识点总结06-数组
下一篇: C语言知识点总结08函数-2
cookie_ls
博客等级 码龄3年 115粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值