C语言入门Day_19 初识函数

news2025/1/20 3:54:40

目录

1.函数的定义

2.函数的调用

3.易错点

4.思维导图


前言:

printf()我们已经很熟悉了,它有一个特定的功能,就是在屏幕上输出一行文字。之前的课程我们都称呼printf()为一个功能,实际上ta在编程中有个特定的名字——函数。

一个函数具有三个特征:输入,输出,函数的功能

之前我们频繁使用的printf()函数是一个“内置”的函数,也就是这个函数是编程语言自带的,或者提前定义好的.同时我们还可以根据自己的意愿自己编写函数,又叫自定义函数。

就像变量一样,函数也分为函数的定义和函数的使用,对于内置函数如printf()来说,我们可以直接使用。对于自定义函数来说,我们依旧需要先定义函数,然后再使用它。

1.函数的定义

1.1

下面我们来看看如何定义一个函数:

我们定义一个给任何输出的整数增加3,然后输出它的函数:

int AddThree(int nummber_a)
{
  number_a=number_a+3;
  return number_a;
}

1.函数输出的数据类  int

2.函数名  AddThree

3.函数的输入部分,这个输入的数据需要是整型int   int number_a

4.函数的具体代码,又称为函数体

5.函数的返回值,又称为函数的输出部分  return number_a;

第一部分是返回值的类型,就是使用这个函数的时候我们会返回一个什么数据类型的值,比如我们这里的函数就会返回一个int整型

int AddThree(int nummber_a)
{
  number_a=number_a+3;
  return number_a;
}

返回值类型里面我们可以看到除了之前学过的intfloat等等类型,

还有一个void,这个的意思是这个函数没有任何返回值

第二部分是函数的名字,又叫函数名,比如这里的函数名就是AddThree,函数名的命名规则和变量的命名规则一模一样

int AddThree(int nummber_a)
{
  number_a=number_a+3;
  return number_a;
}

第三部分是函数的输入部分,我们通过括号里的部分来给函数传入一些数据,比如这里的(int number_a)

int AddThree(int nummber_a)
{
  number_a=number_a+3;
  return number_a;
}

第四部分是函数的代码部分,又叫函数体,它用来实现函数的具体功能,比如这里的功能就是给一个数增加3:

int AddThree(int nummber_a)
{
  number_a=number_a+3;
  return number_a;
}

 函数体里面最需要注意的是返回值,它的关键字是return,返回的数据类型需要和函数一开始定义的的返回值数据类型保持一致

1.2

例如

int MultiTwo(int number_a)
{
  number_a=number_a*2;
  return number_a;  
}

2.函数的调用

2.1

调用函数的时候,我们需要使用函数名加括号内的参数的方式来使用它。

我们来调用上面定义的函数AddThree()

int a=10;
int b;
b=AddThree(a);
printf("%d\n",b);

1.定义变量a,并赋值10   

2.定义变量b   

3.调用函数AddThree(),并把返回值赋给b

int a=10;
int b;
b=AddThree(a);
printf("%d\n",b);

4.调用函数的过程,函数名AddThree(),以及输入的数据a

5.赋值符号,把函数调用的返回值赋值给变量b

6.打印变量b的值,这里会输出

2.2

函数调用就比函数的定义简单一些了,主要分为两部分,一部分是函数名,一部分是输入的数据

对于返回的数据,我们可以赋值给一个变量,也可以直接参与计算,还可以打印它,就像一个寻常的常量一样。

调用函数以后我们大多数时候会得到一个函数输出的内容,比如函数定义中的return number_a

但如果一个函数以void开头,这个函数就不会返回任何数值

所以返回值return关键字,并不是函数的必需部分,如果我们在函数中不写return,函数就不会返回任何值。

为什么编程中有函数这个机制呢?

因为函数可以降低代码的复杂度和代码的维护成本。
 

2.3

比如我们定义一个函数,它的功能是打印输入的整型数字五次。

Void PrintfFiveTimes(int number_a)
{
  printf("%d\n",int number_a);
  printf("%d\n",int number_a);
  printf("%d\n",int number_a);
  printf("%d\n",int number_a);
  printf("%d\n",int number_a);
}

如果我们没有这个函数,每次想要打印一个数字五次的时候,我们都需要调用五次printf(),这样代码就会很复杂。

有了PrintFiveTimes()函数以后,我们每次需要使用“打印五次”这个功能的时候,只需要调用这个函数就可以了,这样我们就降低了代码的复杂度

同时,如果我们忽然有一天想要把打印五次的数量,改成打印三次的话,没有函数的时候,我们需要把代码中所有“打印五次”的地方都进行修改

假设我们的代码中,如果有十个地方都使用了“打印五次”这个功能,我们就需要修改十处代码!

但我们使用函数的话,就可以只修改函数本身就可以了。也就是只修改一处代码。

这就是函数的第二个特点——降低代码维护成本

3.易错点

返回类型为void的函数没有返回值

对于函数,我们“先定义后使用”,函数的定义应该在main函数之前。

4.思维导图

最后我想说的是:

 在撰写这篇文章时,我参考了《白纸编程》这个app的观点和思想,我要感谢他们对我的启发和帮助。

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

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

相关文章

IO和进程day07(IPC、管道、信号)

今日任务 1.代码&#xff08;一次只能发一次消息&#xff0c;不然会存在一些小问题&#xff0c;在接受消息之后会立刻输出上次的第二次发送的消息&#xff09; read.c文件&#xff08;先读取消息&#xff09; #include <stdio.h> #include <string.h> #include &…

org.apache.ibatis.binding.BindingException: Invalid bound statement

在学习黑马头条遇到的关于使用mapper执行方法出现的错误 完整报错信息为&#xff1a;org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.heima.wemedia.mapper.WmNewsMaterialMapper.saveRelations 译为&#xff1a;无效的绑定语句&…

Ubuntu 23.10/24.04 LTS 放弃默认使用 snap 版 CUPS 打印堆栈

导读Canonical 的开发者、OpenPrinting 的项目负责人 Till Kamppeter 今年 5 月表示&#xff0c;计划在 Ubuntu 23.10&#xff08;Mantic Minotaur&#xff09;上默认使用 Snap 版本的 CUPS 打印堆栈。 不过经过数月的测试&#xff0c;官方放弃了这项决定。Ubuntu 23.10&#x…

MySQL面试题——隔离级别相关面试题

隔离级别相关面试题 MySQL事务隔离级别 未提交读——可以读到其他事务未提交的数据&#xff08;最新的版本&#xff09; 错误现象&#xff1a;脏读、不可重复读、幻读的现象 提交读&#xff08;RC&#xff09;——可以读到其他事务已提交的数据&#xff08;最新已提交的版本&…

TypeScript命名空间和模块

&#x1f3ac; 岸边的风&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 命名空间&#xff08;Namespace&#xff09; 命名空间&#xff08;Namespace&#xff09;使用场景 第三方库 兼容…

蓝桥杯官网填空题(迷宫)

题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 X 星球的一处迷宫游乐场建在某个小山坡上。它是由 1010 相互连通的小房间组成的。 房间的地板上写着一个很大的字母。我们假设玩家是面朝上坡的方向站立&#xff0…

Spring 的创建和日志框架的整合

目录 一、第一个 Spring 项目 1、配置环境 2、Spring 的 jar 包 Maven 项目导入 jar 包和设置国内源的方法&#xff1a; 3、Spring 的配置文件 4、Spring 的核心 API ApplicationContext 4、程序开发 5、细节分析 &#xff08;1&#xff09;名词解释 &#xff08;2&…

LeetCode 362 期周赛

8029.与车相交的点 题目&#xff1a; 给你一个下标从 0 开始的二维整数数组 nums 表示汽车停放在数轴上的坐标。对于任意下标 i&#xff0c;nums[i] [starti, endi] &#xff0c;其中 starti 是第 i 辆车的起点&#xff0c;endi 是第 i 辆车的终点。 返回数轴上被车 任意部…

自动化控制系统的设计重点是什么?

要实现对选择性激光烧结系统预热温度的控制&#xff0c;需要找到合理的控制对象模型&#xff0c;但选择性激光烧结设备的预热温度场是一个复杂的非线性系统&#xff0c;很难找到合理的控制对象模型来实现预热温度场的温度控制。模糊控制不需要具体的控制模型&#xff0c;预热温…

Linux命令200例:dnsconf用于配置和管理域名解析服务

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0…

极限的概念与性质

目录 极限的概念 极限的性质 极限的存在准则 极限的概念 极限是数学中的分支——微积分的基础概念&#xff0c;它表示无限趋近于一个固定的数值的过程。在高等数学中&#xff0c;极限可以分为数列极限和函数极限。 1.数列的极限 数列的极限是指对于一个数列{an}中的任意一…

socket编程|TCP

一.套接字概念 套接字&#xff08;Socket&#xff09;是一种用于网络通信的编程接口&#xff0c;它提供了一种机制&#xff0c;使得不同计算机上的应用程序能够通过网络进行通信和交换数据。 套接字可以看作是应用程序和网络之间的端点&#xff0c;它定义了应用程序与网络之间…

400电话:提供全方位客户服务的热线电话

随着现代社会的发展&#xff0c;企业和机构越来越重视客户服务的质量和效率。为了更好地满足客户的需求&#xff0c;提供及时的帮助和解决方案&#xff0c;许多企业纷纷引入了400电话这一全方位客户服务的热线电话。 400电话是一种以4开头的电话号码&#xff0c;通过该号码可以…

[论文阅读]Coordinate Attention for Efficient Mobile Network Design

摘要 最近关于移动网络设计的研究已经证明了通道注意力(例如&#xff0c; the Squeeze-and-Excitation attention)对于提高模型的性能有显著的效果&#xff0c;但它们通常忽略了位置信息&#xff0c;而位置信息对于生成空间选择性注意图非常重要。在本文中&#xff0c;我们提出…

Redis 三种特殊的数据类型 - Geospatial地理位置 - Hyperloglog基数统计的算法 - Bitmaps位图(位存储)

目录 Redis 三种特殊的数据类型&#xff1a; Geospatial&#xff1a;地理位置 Geospatial类型常用的命令&#xff1a; GEOADD&#xff1a;添加地理位置 GEOPOS&#xff1a;获取地理位置 GEODIST&#xff1a;返回两个给定位置之间的距离 GEORADIUS&#xff1a;以给定的经纬…

公司电脑文件加密防泄密软件系统——「天锐绿盾」

天锐绿盾是一款功能强大的公司电脑文件加密防泄密软件系统&#xff0c;旨在保护企业的知识产权和商业机密。 PC访问地址&#xff1a;http://985.so/2y2n9 它具有以下几个主要特点&#xff1a; 文件加密&#xff1a;天锐绿盾会对存储在公司电脑上的所有敏感文件进行自动加密&am…

uniapp——实现电子签名功能——基础积累

话说&#xff0c;2020年刚来杭州的时候&#xff0c;有用到过uniapp&#xff0c;距今已有三年时间了&#xff0c;果然全忘了&#xff0c;哈哈[笑中带泪] 昨天遇到一个需求&#xff1a;就是要实现pdf文件的预览&#xff0c;着实费了我很多的时间&#xff0c;连晚饭都没有吃好。。…

uniapp——实现在线选座功能——技能提升

首先声明一点&#xff1a;下面的内容是从一个uniapp的程序中摘录的&#xff0c;并非本人所写&#xff0c;先做记录&#xff0c;以免后续遇到相似需求抓耳挠腮。 这里写目录标题 效果图代码——html部分cu-custom组件anil-seat组件 代码——jscss部分 效果图 代码——html部分 …

用区熔拉晶法和光谱分析法评价多晶硅棒的规程.

声明 本文是学习GB-T 29057-2023 用区熔拉晶法和光谱分析法评价多晶硅棒的规程. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 12 试验数据处理 12.1 通过测量取得样品的施主、受主杂质和代位碳、间隙氧杂质含量&#xff0c;再按公式(3)计算多晶硅棒…

掌握MyBatis动态SQL:从标签到实战的全面解析

&#x1f600;前言 在我们日常的软件开发中&#xff0c;很多时候都会涉及到与数据库的交互操作。在使用MyBatis框架进行数据库操作时&#xff0c;我们可以利用它提供的一系列XML标签来构建动态SQL语句&#xff0c;以满足不同的业务需求。 . 本文主要探讨了如何使用MyBatis的, ,…