初识C语言之函数(上)

一.函数的概念

1.函数的定义:

在C语言中函数就是一个完成某项特定任务的一小段代码。

2.函数的作用:

一个大的计算机任务可以分为若干个较小的函数来完成。(同一个函数如果能完成某项特定任务的话,这个函数就可以重复使用,从而提高开发软件的效率)

3.函数的分类:

①库函数:由C语言库直接提供

②自定义函数:由自己创造的函数

二.库函数

标准库和头文件:

库函数的相关信息主要详见于下方链接

🔗http://zh.cppreference.com/w/c/header

三.自定义函数

1.语法形式

①函数的返回类型    函数名   (形式参数)

{

函数体

}

②具体解释:

  • 函数的返回类型:void表示什么都不返回。
  • 函数体:真正完成运算的过程。
  • 函数名:自己起的有意义的名字。
  • 形式参数:无参数为void ,有参数需要交代类型名字和参数的个数。

③例子:

#include<stdio.h>

int add(int x,int y)//定义函数并且将形式参数x,y带入函数体参与运算

{

int z=0;//定义变量z并且初始化为0

z=x+y;//将传来的a与b所对应的形式参数x和y相加的值赋值给z

return z;//将计算之后的z值返回给主函数

}

int main ( )

{

int a=0;

int b=0;

scanf("%d  %d",&a,&b);//键盘输入a 与b的值,方便之后进行相加运算

int c=add(a,b);//调用add函数,并且将a与b的值传给函数,最后将函数的返回值赋值给c

printf("%d",c);//打印c也就是(a+b)的值

return 0;

}

  • 上述例子的add函数也可以写成:

int add(int x,int y)

{

return x+y;//将传来的a b 所对应的形式参数x  y相加并且,将相加之后的值直接返回给主函数。

}

  • 注意:函数无参数不等于函数无返回值。

四.形式参数和实际参数

1.实际参数:在调用函数时,真实传递给函数的参数(例如上述例子的a和b)

形式参数:在函数定义中,函数名后面的参数(例如上述例子的x 和y)

2.两者关系

形式参数是实际参数的临时拷贝

五.return 语句

1.return之后可以是数值也可以是表达式。如果是表达式则先执行表达式,再返回表达式的结果。例如return x+y;先计算x+y的值然后将其值返回。

2.return后可以什么都没有,这种写法仅适合函数返回类型是void情况。

例子:

void test(  )

{

printf("好好学习,天天向上");

if(1)//如果1为真命题,则直接return ,提前结束函数。(前提必须为返回类型是void的情况)

{

return ;

}

printf("haha");

}

int main()

{

test();

return 0;

}

上述代码打印的结果为:好好学习,天天向上(不会打印:haha)

3.return返回值和函数类型不一致,系统会自动把返回的值隐式转换为函数的返回类型。

例子:

int test (  )//函数的返回类型为int [整型]

{

return 3.14;//函数的返回值类型为浮点数类型

}

int main()

{

int r=test( );

pribtf("%d",r);

return 0;

}

上述代码的打印结果为3。

根据上述解释:当函数返回类型和函数返回值的类型不同时,则函数的返回值类型会转换为函数返回类型。

4.return语句执行后,函数就彻底返回,后面的代码不再执行。

5.若函数存在 if等分支语句,则应该在保证每种情况下都有return 返回,否则会出现编译错误。

错误示范:

int test()

{

int a=0;

scanf("%d",&a);//键盘录入的值赋给a

if(a)//如果a为真命题则执行下列语句

return 1;若a为真命题则返回1

}

int main ( )

{

int r=test();

return 0;

}

上述代码没有考虑a为假命题的情况,则会报出此类错误:不是所有的控制路径都有返回值。

6.如果不写函数的返回类型,则默认函数的返回类型为整型。

如果函数必须有返回值,但是没有写返回值,那么函数具体返回什么就不得而知了。

六.数组和函数的应用

1.数组传参数时,实际参数应写成数组名,形式参数应写成数组的形式。

例子:

设置函数时:void test (int arr[10],int sz)

调用函数时:test(arr,sz)

2.实际参数与形式参数的名字可以写成一样的,也可以不一样。

3.函数在设计的时候应该功能单一(函数可以重复使用,提高开发软件的效率)

4.数组在传参时,形式参数的数组和实际参数的数组是同一个(对形式参数的修改也同时会修改实际参数)

 

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】深入了解索引背后的内部结构

目录 索引的认识&#xff1a; 作用&#xff1a; 索引的使用&#xff1a; 索引底层的数据结构&#xff1a; 哈希表 AVL树 红黑树 B树&#xff1a; B树&#xff1a; B树搜索&#xff1a; 索引的认识&#xff1a; 索引是数据库中的一个数据结构&#xff0c;用于加速查询…

【MySQL】--- 数据类型

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; MySQL &#x1f3e0; 数据类型分类 MySQL是一套整体的对外数据存取方案,既然要存取数据,而数据有不同的类型,因此MySQL也存在不同的数据类型,有不同的用…

电商店铺数据集成到金蝶云星辰V2的实践经验分享

电商店铺数据集成到金蝶云星辰V2的技术案例分享 在电商业务快速发展的背景下&#xff0c;如何高效地将聚水潭平台上的电商店铺数据集成到金蝶云星辰V2系统中&#xff0c;成为了许多企业面临的重要挑战。本文将详细探讨一个实际运行的解决方案——“电商店铺->金蝶客户”&am…

在VBA中结合正则表达式和查找功能给文档添加交叉连接

在VBA中搜索文本有两种方式可用&#xff0c;一种是利用Range.Find对象&#xff08;更常见的形式可能是Selection.Find&#xff0c;Selection是Range的子类&#xff0c;Selection.Find其实就是特殊的Range.Find&#xff09;&#xff0c;另一种方法是利用正则表达式&#xff0c;但…

大腾智能CAD:国产云原生三维设计新选择

在快速发展的工业设计领域&#xff0c;CAD软件已成为不可或缺的核心工具。它通过强大的建模、分析、优化等功能&#xff0c;不仅显著提升了设计效率与精度&#xff0c;还促进了设计思维的创新与拓展&#xff0c;为产品从概念构想到实体制造的全过程提供了强有力的技术支持。然而…

实现Python将csv数据导入到Neo4j

目录 一、获取数据集 1.1 获取数据集 1.2 以“记事本”方式打开文件 1.3 另存为“UTF-8”格式文件 1.4 选择“是” 二、 打开Neo4j并运行 2.1 创建新的Neo4j数据库 2.2 分别设置数据库名和密码 ​编辑 2.3 启动Neo4j数据库 2.4 打开Neo4j数据库 2.5 运行查看该数据库…

MySQL知识汇总(二):select

select语句 -- select语句 select 字段 from 表 -- 查询全部信息 select * from 表 SELECT * FROM student2 -- 查询指定字段 select name from 表 SELECT name FROM student2 -- 起别名 给查询结果用 AS 起个其他的名字&#xff0c;可以是字段也可以是表 SELECT name AS 名字 …

Restaurants WebAPI(二)——DTO/CQRS

文章目录 项目地址一、DTO1.1 创建Restaurant的Dto1.2 修改之前未使用Dto的接口1.2.1 修改GetRestaurantByIdUseCase1.2.2 修改IGetRestaurantByIdUseCase接口1.2.3 再次请求接口1.3 显示Dish List1.3.1创建DishDto1.3.2 在RestaurantDto里添加DishDto1.3.3 使用Include添加Dis…

c++--------c++概念

定义与起源 C是一种高级编程语言&#xff0c;它是C语言的扩展。C由Bjarne Stroustrup在20世纪80年代初开发&#xff0c;最初被称为“C with Classes”。其设计目的是在保持C语言高效性的同时&#xff0c;增加面向对象编程&#xff08;OOP&#xff09;的特性。例如&#xff0c;…

面向对象设计过程的理解和实践

在软件开发的世界里&#xff0c;面向对象设计&#xff08;Object-Oriented Design&#xff0c;简称OOD&#xff09;是一项至关重要的技术。它不仅帮助我们更好地将现实世界的问题转化为软件系统中的对象&#xff0c;还确保这些对象之间能够高效地协同工作&#xff0c;共同实现系…

游泳溺水识别数据集,对9984张原始图片进行YOLO,COCO JSON, VOC XML 格式的标注,平均识别率在91.7%以上

游泳溺水识别数据集&#xff1a; 对9984张原始图片进行YOLO&#xff0c;COCO JSON, VOC XML 格式的标注&#xff0c;平均识别率在91.7&#xff05;以上 &#xff0c;可识别泳池或者水库中是否有人溺水。 数据集分割 训练组98&#xff05; 9818图片 有效集&#xff05;…

Llama3.370B超越GPT-4o和Claude3.5 Sonnet

AI领域日新月异&#xff0c;最近AI 领域发生了太多事情&#xff0c;本文就语言大模型Llama 3.3 70B、GPT-4o 和 Claude 3.5 Sonnet进行对比。 12月7日&#xff0c;Meta今年的最终AI模型将要来了。Meta12月6日发布了Llama 3.3&#xff0c;拥有700亿个参数&#xff0c;但其性能与…

linux内核网络分层概述

在开发应用时&#xff0c;我们使用 socket 实现网络数据的收发。以tcp为例&#xff0c;server端通过 socket, bind, listen来创建服务端&#xff0c;然后通过 accept接收客户端连接&#xff1b;客户端通过 socket和 connect系统调用来创建客户端。用于数据收发的系统调用包括 s…

【全栈实战】基于 Vue3 + Wot Design Uni 动手封装组件

&#x1f60a;你好&#xff0c;我是小航&#xff0c;一个正在变秃、变强的文艺倾年。 &#x1f60a;好久没有更新有关前端实战教程了&#xff0c;本文主要讲解【全栈实战】基于 Vue3 Wot Design Uni 动手封装组件&#xff01; &#x1f60a;这个教程你将会学到技术正确的选型、…

Ajax中的axios

既然提到Ajax&#xff0c;那就先来说一说什么是Ajax吧 关于Ajax Ajax的定义 Asynchronous JavaScript And XML&#xff1a;异步的JavaScript和XML。 反正就是一句话总结&#xff1a; 使用XML HttpRequest 对象与服务器进行通讯。 AJAX 是一种在无需重新加载整个网页的情况下&…

60.基于SSM的个人网站的设计与实现(项目 + 论文)

项目介绍 本站是一个B/S模式系统&#xff0c;个人网站是在MySQL中建立数据表保存信息&#xff0c;运用SSMVue框架和Java语言编写。并按照软件设计开发流程进行设计实现充分保证系统的稳定性。系统具有界面清晰、操作简单&#xff0c;功能齐全的特点&#xff0c;使得基于SSM的网…

聊聊Flink:Flink的状态管理

一、Flink的状态是什么&#xff1f; 我们知道&#xff0c;Flink的一个算子可能会有多个子任务&#xff0c;每个子任务可能分布在不同的实例&#xff08;即slot&#xff09;上&#xff0c;我们可以把Flink的状态理解为某个算子的子任务在其当前实例上的一个变量&#xff0c;该变…

Idea 将多个module显示在同一个project

Idea 将多个maven项目显示在同一个project下 1、选择菜单 File-》New -》Module from Existing Sources -> 2、在弹出的界面选中对应的Module的pom.xml,然后点击OK按钮就行了 (弹出框上面也提示了Eclipse 项目选中.project文件&#xff1b;Maven 项目选中pom.xml; ) 最终显…

文件解析漏洞中间件(iis和Apache)

IIS解析漏洞 IIS6.X #环境 Windows Server 2003 在iis6.x中&#xff0c;.asp文件夹中的任意文件都会被当做asp文件去执行 在默认网站里创建一个a.asp文件夹并创建一个1.jpg写进我们的asp代码 <%now()%> #asp一句话 <%eval request("h")%> 单独创建一…

gitee别人仓库再上传自己仓库

一、新建一个自己的Git仓库 如果没有注册账号的朋友&#xff0c;可以先去注册一个Gitee的账号&#xff0c;用于管理自己的代码特别好用&#xff01;&#xff01;&#xff01; 接下来就是在gitee上新建一个自己的仓库&#xff0c;如下图所示 二、右建 Git Bush Here删除.git文件…