【C语言回顾】函数

news2024/11/28 6:33:02

  • 前言
  • 1. 函数的概念和分类
  • 2.库函数
  • 3. 自定义函数
    • 3.1 自定义函数的简单介绍
    • 3.2 自定义函数举例
  • 4. 形参和实参
    • 4.1 形参
    • 4.2 实参
    • 4.3 形参和实参的关系
      • 4.3.1 理解
      • 4.3.2 举例代码和调试
  • 5. 嵌套函数和链式访问
    • 5.1 嵌套函数
    • 5.2 链式访问
  • 6. 函数的声明和定义
    • 6.1 单个文件
    • 6.2 多个文件
    • 6.3 static 和 extern
  • 结语


在这里插入图片描述


上期回顾: 【C语言回顾】数组
个人主页:C_GUIQU
专栏:【C语言学习】

在这里插入图片描述

前言

各位小伙伴大家好!上期小编给大家讲解了C语言中的数组,接下来讲讲C语言中的函数!
在这里插入图片描述

1. 函数的概念和分类

【概念】本质上就是子程序。
在这里插入图片描述
【分类】
库函数:C语言内部提供的函数。
自定义函数:自己写出的函数。

2.库函数

【概念】库函数(Library function)是将函数封装入库,供用户使用的一种方式。

【常见库函数】

  • IO函数
  • 字符串操作函数
  • 内存操作函数
  • 时间/日期函数
  • 数学函数

【简单示例】

#include <stdio.h>
#include <math.h> 
	 int main() 
{ 
	 double d = 16.0; 
	 double r = sqrt(d); 
	 printf("%lf\n", r); 
	 return 0; 
} 

在这里插入图片描述

3. 自定义函数

3.1 自定义函数的简单介绍

自定义函数就是自己定义的函数,功能可以多种多样!

ret_type fun_name(形式参数)
{
 
}

• ret_type 是函数返回类型
• fun_name 是函数名
• 括号中放的是形式参数
• {}括起来的是函数体

在这里插入图片描述
可以把函数想象成⼩型的⼀个加⼯⼚,⼯⼚得输⼊原材料,经过⼯⼚加⼯才能⽣产出产品,那函数也是⼀样的,函数⼀般会输⼊⼀些值(可以是0个,也可以是多个),经过函数内的计算,得出结果。

3.2 自定义函数举例

写⼀个加法函数,完成2个整型变量的加法操作

#include <stdio.h> 
int Add(int x, int y) 
{ 
 int z = 0; 
 z = x+y; 
 return z; 
} 
int main() 
{ 
 int a = 0; 
 int b = 0; 
 //输⼊ 
 scanf("%d %d", &a, &b); 
 //调⽤加法函数,完成a和b的相加 
 //求和的结果放在r中 
 int r = Add(a, b); 
 //输出 
 printf("%d\n", r); 
 return 0; 
} 

4. 形参和实参

4.1 形参

【概念】写在自定义函数内部的参数。

【形参的实例化】形式参数只有在函数被调⽤的过程中为了存放实参传递过来的值,才向内存申请空间。

4.2 实参

【概念】真实传递给函数的参数。

4.3 形参和实参的关系

4.3.1 理解

  • 形参和实参各⾃是独⽴的内存空间。
  • 形参是实参的⼀份临时拷⻉。

4.3.2 举例代码和调试

#include <stdio.h> 
int Add(int x, int y) 
{ 
 int z = 0; 
 z = x + y; 
 return z; 
} 
int main() 
{ 
 int a = 0; 
 int b = 0; 
 //输⼊ 
 scanf("%d %d", &a, &b); 
 //调⽤加法函数,完成a和b的相加 
 //求和的结果放在r中 
 int r = Add(a, b); 
 //输出 
 printf("%d\n", r); 
 return 0; 
} 

在这里插入图片描述

5. 嵌套函数和链式访问

5.1 嵌套函数

【说明】在函数中调用函数,就是嵌套函数。函数可以嵌套,但是函数不可以嵌套定义。

#include <stdio.h>
 
void test(int arr[],sz); //函数的声明
void print(int arr[],int sz);
 
int main()
{
    int arr[10] = {0};
    int sz = sizeof(arr)/sizeof(arr[0]);
    test(arr,sz);    //函数的调用——打印数组各元素
    return 0
}
 
void test(int arr[],sz)        //函数的调用
{
    int i =0;
    for(i=0;i<sz;i++)
    {
        arr[i]=i;        //数组元素赋值
    }
    print(arr,sz);        
}
 
void print(int arr[],int sz)
{
    for(i=0;i<sz;i++)
    {
       printf("%d ",arr[i]);        //打印数组元素
    }
}

5.2 链式访问

【说明】将⼀个函数的返回值作为另外⼀个函数的参数,像链条⼀样将函数串起来。

【示例】

#include <stdio.h>
int main()
{
     printf("%d\n", strlen("abcdef"));//链式访问
     return 0;
}    

6. 函数的声明和定义

6.1 单个文件

6.2 多个文件

6.3 static 和 extern

结语

以上就是小编对函数的讲解。
如果觉得小编讲的还可以,还请一键三连。互三必回!
持续更新中~!
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【活动通知】COC 成都 CMeet 系列:2024 WTM 社区(国际妇女节)IWD 活动!

文章目录 前言一、关于 2024 WTM IWD 社区活动二、时间地点三、活动议程及报名方式四、分享嘉宾及主题信息4.1、李然——点燃创造力&#xff0c;重塑未来4.2、何静——乘风破浪&#xff0c;与 AI 的过去、现在、未来式4.3、晓丽老师——用 AI 给女性插上飞翔的翅膀 五、CSDN 成…

小成本搏大流量:微信/支付宝小程序搜索排名优化

随着移动互联网的快速发展&#xff0c;小程序已成为企业和个人开发者重要的流量入口和业务承载平台。而小程序搜索排名则是影响小程序曝光量、用户获取及业务转化的关键因素。小柚在本文和大家探讨如何制定有效的优化方案&#xff0c;提升小程序在搜索结果中的排名。 首先跟我…

2023年图灵奖颁发给艾维·维格森(Avi Wigderson),浅谈其计算复杂性理论方面做出的重要贡献

Avi Wigderson是一位以色列计算机科学家&#xff0c;他在计算复杂性理论方面做出了重要的贡献&#xff0c;并对现代计算产生了深远的影响。 Wigderson的主要贡献之一是在证明计算复杂性理论中的基本问题的困难性方面。他证明了许多经典问题的困难性&#xff0c;如图论中的图同构…

如何使用Postgres的扩展(如PostGIS)来支持地理空间数据

文章目录 解决方案1. 安装PostGIS扩展2. 创建地理空间数据表3. 插入地理空间数据4. 进行地理空间查询 示例代码 在PostgreSQL中&#xff0c;我们可以使用扩展来增强数据库的功能。对于地理空间数据&#xff0c;PostGIS是一个特别有用的扩展&#xff0c;它提供了对地理对象&…

SpringMVC 常用注解介绍

Spring MVC 常用注解介绍 文章目录 Spring MVC 常用注解介绍准备1. RequestMapping1.1 介绍2.2 注解使用 2. 请求参数2.1 传递单个参数2.2 传递多个参数2.3 传递对象2.4 传递数组 3. RequestParam3.1 注解使用3.2 传入集合 4. RequestBody5. PathVariable6. RequestPart7. Rest…

Java PDF文件流传输过程中速度很慢,如何解决?

专栏集锦&#xff0c;大佬们可以收藏以备不时之需&#xff1a; Spring Cloud 专栏&#xff1a;http://t.csdnimg.cn/WDmJ9 Python 专栏&#xff1a;http://t.csdnimg.cn/hMwPR Redis 专栏&#xff1a;http://t.csdnimg.cn/Qq0Xc TensorFlow 专栏&#xff1a;http://t.csdni…

Kimichat炒股:7个提示词案例

●了解股票投资基本概念和知识 什么是有息负债率&#xff1f;用浅显明白的话语针对没有财务会计基础的小白进行解释 Kimi的回答&#xff1a; 有息负债率是一个财务指标&#xff0c;用来衡量一家公司在其负债中有多少是需要支付利息的。简单来说&#xff0c;就是公司借的钱中&…

Scratch四级:第02讲 字符串

第02讲 字符串 教练:老马的程序人生 微信:ProgrammingAssistant 博客:https://lsgogroup.blog.csdn.net/ 讲课目录 运算模块:有关字符串的积木块遍历字符串项目制作:“解密”项目制作:“成语接龙”项目制作:“加减法混合运算器”字符串 计算机学会(GESP)中属于三级的内…

PotPlayer 图像截取

PotPlayer 图像截取 1. PotPlayer2. PotPlayer 下载2.1. PotPlayer 240305 3. 图像截取References 1. PotPlayer http://www.potplayercn.com/ PotPlayer 是 KMPlayer 原作者姜勇囍进入新公司 Daum 之后推出的&#xff0c;继承了 KMPlayer 所有的优点&#xff0c;拥有异常强大…

go语言并发实战——日志收集系统(三) 利用sarama包连接KafKa实现消息的生产与消费

环境的搭建 Kafka以及相关组件的下载 我们要实现今天的内容&#xff0c;不可避免的要进行对开发环境的配置&#xff0c;Kafka环境的配置比较繁琐&#xff0c;需要配置JDK,Scala,ZoopKeeper和Kafka&#xff0c;这里我们不做赘述&#xff0c;如果大家不知道如何配置环境&#x…

全国产化无风扇嵌入式车载电脑农耕车辆/钢厂天车行业应用

农耕车辆行业应用 背景介绍 当前农耕车车载电脑主要的功能&#xff0c;是要实现农耕车的精确的定位和导航&#xff0c;更加先进的系统则要实现农耕车自动驾驶&#xff0c;与农耕车上相关传感器的通讯(例如耕土深度的传感器, 油量存量传感器…)来实现更多的自动化、信息化的功能…

28岁转行嵌入式适合转嵌入式吗?

转行到嵌入式领域是一个很好的选择&#xff0c;特别是如果你对电子技术、嵌入式系统和软硬件交互感兴趣的话。我这里有一套嵌入式入门教程&#xff0c;不仅包含了详细的视频 讲解&#xff0c;项目实战。如果你渴望学习嵌入式&#xff0c;不妨点个关注&#xff0c;给个评论222&a…

Java面试八股之JDK和JRE的区别

JDK和JRE的区别 定义&#xff1a;JDK&#xff08;Java Development Kit&#xff09;是Java开发工具包的缩写&#xff0c;它是Java开发人员必备的工具。JDK包含了编译器(javac)、Java虚拟机(JVM)和Java类库等开发工具和资源。它提供了开发、编译、调试和运行Java程序所需的一切…

NLP学习(1)-搭建环境

前言 仅记录学习笔记&#xff0c;如有错误欢迎指正。 环境搭建 一、环境软件安装&#xff1a; 1、Anaconda安装&#xff08;一款可以同时创建和管理多个python环境的软件&#xff09; (1) 安装链接&#xff1a; https://blog.csdn.net/m0_61531676/article/details/126290…

适用于Windows电脑的最佳数据恢复软件是哪些?10佳数据恢复软件

丢失我们系统中可用的宝贵信息是很烦人的。我们可以尝试几种手动方法来重新获取丢失的数据。然而&#xff0c;当我们采用非自动方法来恢复数据时&#xff0c;这是一项令人厌烦和乏味的工作。在这种情况下&#xff0c;我们可以尝试使用一些正版硬盘恢复软件进行数据恢复。此页面…

【honggfuzz学习笔记】honggfuzz的基本特性

本文架构 1.动机2.honggfuzz的基本概念官网描述解读 3. honggfuzz的反馈驱动(Feedback-Driven)软件驱动反馈&#xff08;software-based coverage-guided fuzzing&#xff09;代码覆盖率代码覆盖率的计量单位 代码覆盖率的统计方式 硬件驱动反馈&#xff08; hardware-based co…

.NET开源免费的跨平台框架 - MAUI(附学习资料)

前言 前几天分享了一个.NET MAUI开源免费的UI工具包 - Uranium&#xff0c;然后技术群有不少同学问.NET MAUI是不是免费的&#xff1f;能做什么&#xff1f;今天特意写这篇文章来介绍一下.NET开源、免费&#xff08;基于MIT License&#xff09;的跨平台框架&#xff1a;MAUI。…

使用WebSocket实现答题积分排名实时更新的功能

需求分析 接到一个需求&#xff0c;是一个答题积分小程序&#xff0c;其中有一个功能需求是需要实时更新答题积分排名的。之前通常比较常见的需求&#xff0c;都是指定某个时间点才更新答题排行榜的数据的。 经过技术调研&#xff0c;要实现答题积分排名实时更新的功能&#…

Stable Diffusion XL优化终极指南

如何在自己的显卡上获得SDXL的最佳质量和性能&#xff0c;以及如何选择适当的优化方法和工具&#xff0c;这一让GenAI用户倍感困惑的问题&#xff0c;业内一直没有一份清晰而详尽的评测报告可供参考。直到全栈开发者Flix San出手。 在本文中&#xff0c;Flix介绍了相关SDXL优化…

李沐45_SSD实现——自学笔记

主体思路&#xff1a; 1.生成一堆锚框 2.根据真实标签为每个锚框打标(类别、偏移、mask) 3.模型为每个锚框做一个预测(类别、偏移) 4.计算上述二者的差异损失&#xff0c;以更新模型weights 先读取一张图像。 它的高度和宽度分别为561和728像素。 %matplotlib inline import …