《零基础看得懂的C语言入门教程 》——(十一)C语言自定义函数真的很简单

一、学习目标

  1. 了解C语言的自定义函数的使用方法
  2. 了解C语言自定义函数的传参
  3. 了解C语言自定义函数的返回值

目录

C语言真的很难吗?那是你没看这张图,化整为零轻松学习C语言。

第一篇:(一)脱离学习误区
第二篇:(二)C语言没那么难简单开发带你了解流程
第三篇:(三)轻轻松松理解第一个C语言程序
第四篇:(四)C语言的基本数据类型及变量
第五篇:(五)C语言的变量、常量及运算
第六篇:(六)轻轻松松了解C语言的逻辑运算
第七篇:(七)C语言的循环分分钟上手
第八篇:(八)了解基本数组还不是那么简单
第九篇:(九)C语言二维数组与循环嵌套
第十篇:(十)C语言的指针原来是这样
第十二篇:(十二)原来结构体是这么回事
第十三篇:(十三)socket服务端编写

C语言新手的100个报错解法
欢迎大家关注公众号,公众号每满1024及1024倍数则会抽奖赠送机械键盘一份+IT书籍2份哟~
在这里插入图片描述

二、了解C语言自定义函数的使用方法

在C语言中函数是可以自定义的,根据自己的需求实现不同的函数方便在之后开发中使用。

2.1 了解自定义函数的使用方法
自定义函数由几部分构成,最简单的函数有返回类型修饰符、函数名以及函数体。返回类型的修饰符为类型修饰符,如int、float、char等;返回类型修饰符一般放在函数名前,函数名的定义方式与变量名定义规范类似;自定义函数的函数体则是在一对花括号内的代码内容。

我们先看一个示例:

#include<stdio.h>
void func(){printf("这里是自定义函数\n");
}void main() {func(); 
}

以上代码中,自定义函数为:

void func(){printf("这里是自定义函数\n");
}

在以上对于函数的描述中,我们得知最简单的函数构成为类型修饰符、函数名以及函数体。以上函数的类型修饰符为void,void表示当前函数没有返回值(什么是返回值接下来会说到)。函数名为func,函数名后接着一堆圆括号,圆括号后有一对花括号,花括号内则是函数体。当前函数体内的内容为输出"这里是自定义函数\n"这一个提示。当前函数的功能也就是显示 "这里是自定义函数\n"这个内容了。

在main中,调用了自定义函数func。之前我们已经知道,函数使用方式为函数名后接一堆圆括号,所以代码写为 func();,用分号结束。调用后将会执行函数中的代码将会显示 "这里是自定义函数\n"

运行结果如下:
在这里插入图片描述
细心的同学发现,其实我们的main也是一个函数,我们使用void修饰main函数,不过main是系统函数表示当前代码的入口,我们所编写的代码将会从main函数第一条语句开始运行。

2.2 了解有参函数的使用方法
我们经常使用printf函数,该函数我们传入什么值将会在程序运行时显示什么值;所传入的值称为参数,我们自定义的函数也可以实现这个功能。例如我想显示变量a的值,只需要修改一下上一节的代码即可实现,代码如下:

#include<stdio.h>
void func(int a){printf("变量a 的值是%d\n",a);
}void main() {int a=10;func(a); 
}	

以上代码在func函数的圆括号中添加了int aint a表示func函数接收一个整数类型的变量a;在func函数中,使用printf函数输出了变量a的值,在函数中使用的a变量在func(int a)中表示声明,具体值需要在使用函数时传入。使用函数传参只需要函数名后接的圆括号中传入值,则表示把值赋值给func圆括号中的变量a,如func(a); 则表示把外部的a变量值赋值给func函数的a变量。

在以上函数中,func(int a)的变量a与main函数的a是有区别的;就好比你们学校校长叫做小明,你们班有个学生叫做小明,在你们班级平常称呼中,小明指的是你们班级的小明,并不是校长;函数也一样,在函数中,使用的a单单值函数内的a,func(int a)中的a,以及接下来函数内使用的a只代表当前函数。

结果如下:
在这里插入图片描述
当然传入的值也可以写为具体的值,代码如下:

#include<stdio.h>
void func(int a){printf("传入的值是%d\n",a);
}void main() {int a=10;func(99); 
}	

运行结果如下:
在这里插入图片描述

2.2 了解有多个参函数的使用方法
以上了解了一个参数的自定义函数,接下来了解多个参数的自定义参数使用方法。查看示例:

#include<stdio.h>
void func(int a,int b){printf("a+b 的值是%d\n",a+b);
}void main() {int a1=10,b1=11;func(a1,b1); 
}	

以上代码中,func函数接收两个参数,一个是a,一个是b,两个参数之间使用逗号间隔,func自定义函数中则会输出两个数相加的结果。在main函数中,定义了两个变量一个为a1,一个为b1,使用func后传入两个变量,它们之间使用逗号间隔。

运行结果如下:
在这里插入图片描述
2.2 了解自定义函数返回值
我们修改上一节示例,现在需求更换为只需要得到两个值做加法运算后的值,不需要在函数中输出,只需要在外部输出结果。代码如下:

#include<stdio.h>
int func(int a,int b){int c=a+b ;return c; 
}void main() {int a=10,b=11;int c=func(a,b); printf("%d",c);
}	

以上代码中,void func 修改成了int func,void表示当前函数无返回值,使用int 表示当前函数将会返回一个整数值表示当前函数最终的结果。

在函数体中定义了一个整数类型变量c,并且直接赋值为a+b的结果;最后使用return关键字表示把变量c的值给返回出去。在外部需要使用一个变量接收如 int c=func(a,b); ,这时变量c就得到了func函数返回的值。在以上代码中使用printf函数查看c的结果。

运行结果如下:
在这里插入图片描述
当然也可以直接输出函数的结果值:

#include<stdio.h>
int func(int a,int b){int c=a+b ;return c; 
}void main() {int a=10,b=11;printf("%d",func(a,b));
}	

想要再简便代码一点也可以这样:

#include<stdio.h>
int func(int a,int b){return a+b; 
}void main() {int a=10,b=11;printf("%d",func(a,b));
}	

描述函数返回值的修饰符一定要与返回值类型一致,否则将会出现无法预料的结果或者直接报错。
在这里插入图片描述
以上代码我使用void修饰了一个有返回值的函数,编译器直接报错提示我的函数是有返回值的但是用了void修饰。

三、总结

通过以上描述与讲解,我们了解了以下几点内容:

  1. 了解了自定义函数的基本使用方法
  2. 了解了自定义函数类型修饰符与变量类型修饰符一致
  3. 了解了有参自定义函数的使用方法
  4. 了解了自定义函数有返回值的使用方法

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

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

相关文章

**【ci框架】精通CodeIgniter框架

http://blog.csdn.net/yanhui_wei/article/details/25803945 一、大纲 [php] view plaincopy1、codeigniter框架的授课内容安排 2、codeigniter框架的简介 |-----关于框架的概念 |-----使用CI框架的好处 |-----为什么选择CI框架 3、codeigniter框架…

《假如编程是魔法之零基础看得懂的Python入门教程 》——(一)既然你选择了这系列教程那么我就要让你听得懂

一、前言 几个月前编写了一份python语言入门的博文&#xff0c;近期重新审阅了一遍发现编写的质量太过随意&#xff0c;可能对于一部分人并不是非常友好&#xff0c;故此重新编写Python语言的零基础教程。 本篇教程将会尽量把一些专业术语给读者讲解清楚&#xff0c;并且让读…

环形队列

在网上看到一篇比较好的介绍队列的文章&#xff0c;地址为&#xff1a;http://www.cnblogs.com/kubixuesheng/p/4104802.html 特此感谢原创作者&#xff0c;以下均为摘抄。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1、…

Blazor University (19)使用 RenderFragments 模板化组件 —— 数据传递

原文链接&#xff1a;https://blazor-university.com/templating-components-with-renderfragements/passing-data-to-a-renderfragement/将数据传递给 RenderFragment源代码[1]到目前为止&#xff0c;我们使用了仅包含子标记的 RenderFragments&#xff0c;然后在渲染组件时按…

《零基础看得懂的C语言入门教程 》——(十二)原来结构体是这么回事

一、学习目标 了解C语言的结构体的使用方法了解C语言结构体的结构的赋值了解多种C语言结构体变量的赋值方法和取值方法 目录 C语言真的很难吗&#xff1f;那是你没看这张图&#xff0c;化整为零轻松学习C语言。 第一篇&#xff1a;&#xff08;一&#xff09;脱离学习误区 第…

mysql关系数据库引擎_MySQL数据库引擎详解

作为Java程序员&#xff0c;MySQL数据库大家平时应该都没少使用吧&#xff0c;对MySQL数据库的引擎应该也有所了解&#xff0c;这篇文章就让我详细的说说MySQL数据库的Innodb和MyIASM两种引擎以及其索引结构。也来巩固一下自己对这块知识的掌握。Innodb引擎Innodb引擎提供了对数…

Java之synchronized的JVM底层实现原理精简理解

1 synchronized的JVM底层原理实现的精简理解 Java 虚拟机中的synchronized基于进入和退出Monitor对象&#xff08;也称为管程或监视器锁&#xff09;实现&#xff0c; 无论是显式同步(synchronized作用在同步代码块&#xff0c;有明确的 monitorenter 和 monitorexit 指令) 还是…

三分钟掌握Actor和CSP模型

点击上方蓝字进行关注前文传送门&#xff1a;《三分钟掌握共享内存模型和 Actor模型》&#xff0c; 一直想比较Actor模型与golang的CSP模型&#xff0c;经过一段时间的实战记录了本文。Actor vs CSP模型• 传统多线程的的共享内存&#xff08;ShareMemory&#xff09;模型使用l…

DateTimeToUnix/UnixToDateTime 对接时间转换

问题&#xff0c;通过毫秒数来解析出时间&#xff1a;&#xff08;很多对接的时候经常需要用到&#xff09; <?php $MyJson {"jingdong_vas_subscribe_get_responce":{"code":"0","item_code":"FW_GOODS-2236-1","…

【学生选课系统经典】VB与SQLSERVER连接:Windows应用工程案例

实验任务描述 1 用VB6访问SQLSERVER数据库(两种安全模式); 2 用VB6完成数据库指定表上的数据显示; 3 用VB6完成数据库指定表上的数据插入、删除和更新; 4 用VB6完成SQLSERVER2008数据库用户验证。 一、数据库系统 该实验中,所要求的数据库名称为SCHOOL,总共涉及以下表:

《假如编程是魔法之零基础看得懂的Python入门教程 》——(二)魔法实习生第一步了解魔杖的使用

学习目标 了解什么是开发环境了解python语言的环境安装了解python语言编程的编辑器工具 目录 第一篇&#xff1a;《假如编程是魔法之零基础看得懂的Python入门教程 》——&#xff08;一&#xff09;既然你选择了这系列教程那么我就要让你听得懂 第三篇&#xff1a;《假如编…

mysql5.7 only_full_group_by_Mysql5.7及以上版本 ONLY_FULL_GROUP_BY报错的解决方法

近期在开发过程中&#xff0c;因为项目开发环境连接的mysql数据库是阿里云的数据库&#xff0c;而阿里云的数据库版本是5.6的。而测试环境的mysql是自己安装的5.7。因此在开发过程中有小伙伴不注意写了有关group by的sql语句。在开发环境中运行是正常的&#xff0c;而到了测试环…

一款高速的NET版的离线免费OCR

PaddleOCR.Onnx一款基于Paddle的OCR&#xff0c;项目使用ONNX模型&#xff0c;速度更快。本项目同时支持X64和X86的CPU上使用。本项目是一个基于PaddleOCR的C代码修改并封装的.NET的工具类库。包含文本识别、文本检测、基于文本检测结果的统计分析的表格识别功能&#xff0c;同…

spring 注解简单使用

一、通用注解 1、项目结构&#xff1a; 2、新建Person类&#xff0c;注解Component未指明id&#xff0c;则后期使用spring获取实例对象时使用默认id"person"方式获取或使用类方式获取 package hjp.spring.annotation.commen;import org.springframework.stereotype.C…

《假如编程是魔法之零基础看得懂的Python入门教程 》——(三)使用初始魔法跟编程魔法世界打个招呼吧

学习目标 完成显示魔法的使用——输出print完成传入魔法的使用——输入input使魔法生效——运行python文件 目录 第一篇&#xff1a;《假如编程是魔法之零基础看得懂的Python入门教程 》——&#xff08;一&#xff09;既然你选择了这系列教程那么我就要让你听得懂 第二篇&am…

查缺补漏系统学习 EF Core 6 (一)

推荐关注「码侠江湖」加星标&#xff0c;时刻不忘江湖事掌握 ORM 开发方式是每一个 .NET 开发者所必备的技能&#xff0c;而且 .NET 平台有很多优秀的 ORM 框架。很多人都会诟病 .NET 官方标配的 Entity Framework&#xff0c;感觉其笨重难用、性能低下。但其实经过多年发展&am…

【经典回放】JavaScript学习详细干货笔记之(一)

【经典回放】JavaScript学习详细干货笔记之&#xff08;一&#xff09; 【经典回放】JavaScript学习详细干货笔记之&#xff08;二&#xff09; 【经典回放】JavaScript学习详细干货笔记之&#xff08;三&#xff09; 目录 一、为什么要学JavaScript 二、JavaScript经典案例 …

TCP之三次握手和四次挥手过程

1 TCP包头里面的标志位 下图为TCP头部里面部分信息,入下标志位,每个标志位占一位。 标志位这里会涉及3个,ACK SYN FIN ACK:确认序号有效。 SYN:发起一个新连接。 FIN:释放一个连接。 2 三次握手过程 第一次握手 Client将标志位SYN置1,随机产生一个值seq=J,并将数…

gearman mysql编译_gearman初探(一、编译和安装)

gearman是一个任务分发系统&#xff0c;将计算比较耗时的任务分发给不同的机器专门进行计算&#xff0c;而任务发起的初始程序不必等待这些任务完成就可以返回而继 续执行。笔者最开始做PHP邮件发送的时候&#xff0c;因为邮件发送耗时比较长&#xff0c;这时PHP脚本就会被阻塞…

《假如编程是魔法之零基础看得懂的Python入门教程 》——(四)了解魔法百宝箱列表、字典及基本数据类型

学习目标 了解魔法世界中可更改容器——变量了解魔法世界的基本数值类型——字符串、整数了解魔法百宝箱——字典、列表了解列表如何添加值了解字典如何添加值了解字典与列表定义的不同符号 目录 第一篇&#xff1a;《假如编程是魔法之零基础看得懂的Python入门教程 》——&…