函数及函数的定义

前言:

        在之前介绍指针的时候,小编发现有些地方需要用函数,所以小编决定先带领大家学习函数,然后再学习指针。

        函数是从英文function翻译过来的,其实function在英文中的意思就是函数,也是功能的意思,从本质上来说,函数就是用来完成一定功能的。

        C语言建立函数的主要目的是为了实现代码的模块化和重用。通过将一段具有特定功能的代码封装在一个函数中,可以将代码进行分割,使程序结构更清晰,便于阅读和维护。另外,函数可以在不同的地方进行调用,实现代码的重用,减少代码的冗余,提高开发效率。函数还可以提高程序的可扩展性和可维护性,当需求变化时,只需要修改函数内部的实现,而不需要修改调用函数的代码。

一、为什么要用函数

        在设计一个较大的程序的时候,往往把它分为若干个程序模块,每个模块包括一个或多个函数,每个函数实现一个特定的功能。一个C语言程序由一个主函数和若干个其他函数构成。由主函数调用其他函数,其他函数也可以互相调用,同一个函数可以被一个或多个函数调用任意多次。

        函数就是功能,每个函数用来实现一个特定的功能。

        下面给大家举一个小例子:

#include<stdio.h>
int main()
{void hz1();void hz2();hz1();hz2();hz1();return 0;
}void hz1()
{printf("*************** \n");
}void hz2()
{printf("黑珍珠真帅 \n");
}*************** 
黑珍珠真帅      
*************** 
PS C:\csay\cyuyan> 

        程序分析:

        hz1和hz2是定义的函数名,用来输出一排*和一行文字,在定义这2个函数时指定函数的类型为void,即无函数值,也就是说,执行这2个函数后不会把任何值带回main函数,在main函数中,是要对函数进行声明,一遍再编译时在进行到main函数调用hz1()和hz2()时知道它们是函数而不是变量或其他对象。

二、函数的分类

1.从用户使用的角度来看。函数有2种。

        库函数:库函数是由系统提供的,用户不必自己定义,可以直接使用它们。

        用户自己定义的函数:用于解决用户专门需要的函数。

2.从函数的形式来看。函数分2类。

        无参函数:在调用无参函数时,主函数不向被调用函数传递数据,无参函数一般用来执行指定的一组操作。

        有参函数:在调用函数时,主调函数在调用被调用函数时,通过参数向被调用函数传递数据,一般情况下,执行被调用函数时会得到一个函数值,供主调函数使用。

三、怎样定义函数

        C语言要求,在程序中用到的函数必须先定义后使用,必须事先规范对它进行定义,指定它的名字,函数返回值类型,函数实现的功能以及参数的个数和类型。        

        定义函数应包括以下几个内容:
        (1)指定函数的名字,以便以后按名调用。
        (2)指定函数的类型,即函数返回值的类型。
        (3)指定函数的参数的名字和类型,以便在调用函数时向它们传递数据,对无参函数不需要这项。
        (4)指定函数应当完成什么操作,也就是函数是做什么的,即函数的功能。这是最重要的,是在函数体中解决的。

1.定义无参函数

        无参函数的一般形式:

        方式一
        类型名 函数名(){
           函数体
        }

        方式二
        类型名 函数名(void){ 
            函数体
        }

        方式二中void 的意思是空,表示函数没有参数。在定义函数时要用类型名指定函数值的类型,即指定函数带回来值的类型。

2.定义有参函数

        有参函数的一般形式:

        类型名 函数名(形式参数表列){
            函数体
        }

3.定义空函数

        空函数的一般形式:

        类型名 函数名()
        { }

        函数体是空的,调用此函数时,什么工作也不做,没有任何实际作用。

🚀感谢:给读者的一封信

亲爱的读者:
       这篇文章中我投入了大量的心血和时间,希望为大家提供有价值的内容。

        如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持了,这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响,也鼓励我花更多的时间和精力创作更多有价值的内容。

        如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。

                  

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

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

相关文章

UE4运用C++和框架开发坦克大战教程笔记(十九)(第58~60集)完结

UE4运用C和框架开发坦克大战教程笔记&#xff08;十九&#xff09;&#xff08;第58~60集&#xff09;完结 58. 弹窗显示与隐藏59. UI 面板销毁60. 框架完成与总结 58. 弹窗显示与隐藏 这节课我们先来补全 TransferMask() 里对于 Overlay 布局类型面板的遮罩转移逻辑&#xff…

C++,stl,栈stack和队列queue详解

1.栈stack 1.stack基本概念 2.stack常用接口 代码示例&#xff1a; #include<bits/stdc.h> using namespace std;int main() {stack<int> stk;stk.push(7);stk.push(9);stk.push(5);cout << "栈的size为&#xff1a;" << stk.size() <…

【STL】list模拟实现

vector模拟实现 一、接口大框架函数声明速览二、结点类的模拟实现1、构造函数 三、迭代器类的模拟实现1、迭代器类存在的意义2、迭代器类的模板参数说明3、构造函数4、运算符的重载&#xff08;前置和后置&#xff09;&#xff08;1&#xff09;前置&#xff08;2&#xff09;后…

【Web】vulhub Shiro-550反序列化漏洞复现学习笔记

目录 Shiro简介 复现流程 工具一把梭 半脚本半手动 原理分析 反序列化入口 常见的key 登录过程 验证过程 利用原理 Shiro简介 Apache Shiro 是一个强大且易于使用的 Java 安全框架&#xff0c;用于身份验证、授权、加密和会话管理等安全功能。Shiro 的设计目标是简单…

【Spring】springmvc如何处理接受http请求

目录 ​编辑 1. 背景 2. web项目和非web项目 3. 环境准备 4. 分析链路 5. 总结 1. 背景 今天开了一篇文章“SpringMVC是如何将不同的Request路由到不同Controller中的&#xff1f;”&#xff1b;看完之后突然想到&#xff0c;在请求走到mvc 之前服务是怎么知道有请求进来…

大模型是如何实现Function Call函数调用的?

▼最近直播超级多&#xff0c;预约保你有收获 近期直播&#xff1a;《Agent 企业级应用案例实战》 —1— 大模型如何实现函数调用&#xff1f; 大模型要实现精确的函数调用&#xff08;Function Call&#xff09;需要理解能力和逻辑能力&#xff0c;理解能力就是对用户的 Prom…

redhat grub.cfg配置文件丢失或报错解决

1.实验环境&#xff1a;把grub.cfg删除 [rootexample ~]# rm -rf /boot/grub2/grub.cfg 2.重启服务器 3&#xff0c;发现进入系统失败 输入以下命令 ls: 列出当前设备上的文件和目录。 grub> ls (hd0) (hd0,msdos3) (hd0,msd0s2) (hd0,msdos1) #一般第一个为/boot分区se…

技术精英求职必备:Java开发工程师简历制作全指南

投简历找工作嘛&#xff0c;这事儿其实就跟相亲差不多&#xff0c;得让对方一眼就看上你。 在这场职场的‘相亲’中&#xff0c;怎样才能让你的简历脱颖而出&#xff0c;成为HR眼中的理想‘对象’呢&#xff1f;来&#xff0c;我给你支几招&#xff0c;让你的简历更吸引人。 …

HiveSQL——用户中两人一定认识的组合数

注&#xff1a;参考文章&#xff1a; SQL之用户中两人一定认识的组合数--HQL面试题36【快手数仓面试题】_sql面试题-快手-CSDN博客文章浏览阅读1.2k次&#xff0c;点赞3次&#xff0c;收藏12次。目录0 需求分析1 数据准备2 数据分析3 小结0 需求分析设表名&#xff1a;table0现…

MPLS VPN功能组件(3)

私网标签分配 通过MPBGP为VPNv4路由分配内层标签 PE从CE接收到IPv4路由后&#xff0c;对该路由加上相应VRF的RD&#xff08;RD手动配置&#xff09;&#xff0c;使其成为一条VPNV4路由&#xff0c;然后在路由通告中更改下一跳属性为自己&#xff0c;通常是自己的Loopback地址…

sql实现将某一列下移一行

问题 实现如下图所示的 max_salary 下移一行 方法&#xff1a;使用开窗函数 select max_salary, max(max_salary) over(order by max_salary asc rows between 1 PRECEDING and 1 PRECEDING) max_salary_plus from jobs

【ArcGIS微课1000例】0102:面状要素空洞填充

文章目录 一、实验描述二、实验数据三、实验步骤1. 手动补全空洞2. 批量补全空洞四、注意事项一、实验描述 在对地理数据进行编辑时,时常会遇到面数据中存在个别或大量的空洞,考虑实际情况中空洞的数量多少、分布情况,填充空洞区域可以采用逐个填充的方式,也可以采用快速大…

Qlik Sense : Lookup函数

LookUp - 脚本函数 Lookup() 用于查找已经加载的表格&#xff0c;并返回与在字段 match_field_name 中第一次出现的值 match_field_value 对应的 field_name 值。表格可以是当前表格或之前加载的其他表格。 语法&#xff1a; lookup(field_name, match_field_name, match_…

【工具】Android|Android Studio 长颈鹿版本安装下载使用详解

版本&#xff1a;2022.3.1.22&#xff0c; https://redirector.gvt1.com/edgedl/android/studio/install/2022.3.1.22/android-studio-2022.3.1.22-windows.exe 前言 笔者曾多次安装并卸载Android Studio&#xff0c;反复被安卓模拟器劝退。现在差不多是第三次安装&#xff0c…

Linux操作系统基础(五):Linux的目录结构

文章目录 Linux的目录结构 一、Linux目录与Windows目录区别 二、常见目录介绍&#xff08;记住重点&#xff09; Linux的目录结构 一、Linux目录与Windows目录区别 Linux的目录结构是一个树型结构 Windows 系统 可以拥有多个盘符, 如 C盘、D盘、E盘 Linux 没有盘符 这个概…

EasyRecovery免费版2024电脑数据恢复利器

在数字化时代&#xff0c;我们的生活和工作都离不开电脑&#xff0c;电脑硬盘中的数据却时常面临丢失的风险&#xff0c;无论是因为误删除、格式化、病毒感染还是硬件故障&#xff0c;都可能让我们付出沉重的代价&#xff0c;在这种情况下&#xff0c;一款强大的数据恢复软件就…

玉米基因miRNA结合位点预测工具

前记 目前&#xff0c;已经有很多种玉米miRNA结合位点预测工具可供选择&#xff0c;以下几种比较常用&#xff1a; 1、psRNATarget&#xff1a;该工具是由华盛顿州立大学开发的&#xff0c;可以用来预测植物miRNA和靶基因之间的相互作用。用户可以使用该工具来预测玉米miRNA和结…

【GAMES101】Lecture 19 相机

目录 相机 视场 Field of View (FOV) 曝光&#xff08;Exposure&#xff09; 感光度&#xff08;ISO&#xff09; 光圈 快门 相机 成像可以通过我们之前学过的光栅化成像和光线追踪成像来渲染合成&#xff0c;也可以用相机拍摄成像 今天就来学习一下相机是如何成像的…

【服务器数据恢复】服务器RAID模块硬件损坏的数据恢复案例

服务器数据恢复环境&故障&#xff1a; 某品牌服务器中有一组由数块SAS硬盘组建的RAID5磁盘阵列&#xff0c;服务器操作系统是WINDOWS SERVER&#xff0c;服务器中存放企业数据&#xff0c;无数据库文件。 服务器出故障之前出现过几次意外断电的情况&#xff0c;服务器断电…

JavaScript基础第六天

JavaScript 基础第六天 今天我们学习数组的遍历&#xff0c;以及数组的其他用法。 1. 数组遍历 1.1. 古老方法 可以使用 for 循环进行遍历。 let arr ["a", "b", "d", "g"]; for (let i 0; i < arr.length; i) {console.log…