首页 > 其他分享 >C语言新手小白详细教程(6)函数

C语言新手小白详细教程(6)函数

时间:2024-08-08 11:53:08浏览次数:15  
标签:教程 定义 调用函数 C语言 返回值 类型 新手 形式参数 函数

希望文章能够给到初学的你一些启发~ 如果觉得文章对你有帮助的话,点赞 + 关注+ 收藏支持一下笔者吧~

阅读指南:


开篇说明

截止目前,我们已经可以完成很多C语言的程序了,但这些程序都比较简单。如果你需要完成一个功能复杂的大项目,仍然按照目前的方法,所有代码平铺,从阅读和维护就会变得十分困难。所以我们引入了函数这个概念。
函数:完成特定人物的独立程序代码单元

为什么要使用函数?


  1. 省去编写重复代码的功夫
    例如之前学过的输入函数 scanf()和输出函数printf(),当我们需要执行输入输出任务时,不需要每次都编写完整的输入输出代码,只需要调用这两个函数即可。
  2. 可以让程序更加模块化
    即使只完成某项人物一次,也值得使用函数,因为函数让程序更加模块化,从而提高了代码的可读性。更方便后期修改,完善。

1.定义一个函数

所有在程序中用到的所有函数,都必须“先定义,再使用”

  1. 定义无参数函数
    结构为:
    类型名 函数名()
    {
    函数体
    }
  2. 定义有参数函数
    结构为:
    类型名 函数名(形式参数列表)
    {
    函数体
    }

2.初步调用函数

我们学习函数的目的就是为了调用函数,也就是使用函数。
调用函数的一般形式为:函数名(实参列表);
:实参列表可以没有,但括号不可以省略
例:

创建一个在一行打印40个星号的函数,并在一个打印表头的程序中使用该函数。

我们应该先定义一个函数,并在一个打印表头的程序中使用该函数。
然后编写一个主函数,在主函数中调用这个打印星号的函数。


#include <stdio.h>
void starbar()
{
    int i;
    for(i=1;i<=40;i++)
    {
        printf("*");//循环输出40个星号
    }
    printf("\n");//换行
}
int main()
{
    starbar();//调用函数starbar()
    
    printf("name:\n");//输出提示信息
    printf("Address:\n");//输出提示信息
    printf("Number:\n");//输出提示信息
    return 0;
}

输出结果是这样子的:
在这里插入图片描述


3.定义函数详解

我们定义函数时,需要什么,定义什么就可以了
类型名 函数名(形式参数列表)
{
函数体
}

  • 类型名:和定义变量一样,告诉计算机你定义的类型是什么(int,char);并且你定义的函数会实现一些功能,实现了之后是否会返回(输出)一个结果,如果需要返回的,那么这个结果的类型是什么。
  • 函数名:起名字 等后面调用时调用。
  • 形式参数列表:定义函数所实现的功能,是否需要输入,如果需要就定义一个有参函数,不需要就定义一个无参函数。
  • 函数体,你需要实现的功能,和编写普通程序一样

    1.定义一个无形式参数的函数

在这里插入图片描述

  • 这个函数实现了一个打印特定语句“这是一个分割线的功能”
  • 不需要参数
  • 没有返回值,类型名就是void

输出结果是这样子的:
在这里插入图片描述


2.定义一个有形式参数的函数
在这里插入图片描述
输出结果是这样子的:
在这里插入图片描述

  • 这个函数的打印语句有一个变量num,这个变量来自形式参数列表。
  • 不同的参数会打印出不同的结果
  • 没有返回值,类型名就是void

3.定义一个有形式参数也有返回值的函数
在这里插入图片描述
输出结果是这样子的:
在这里插入图片描述

  • 这个函数的功能是比较a 和 b 的大小,并返回大的那一个。
  • 比较的变量来自参数列表
  • 比较的结果用return返回,这时类型名和返回值的类型一样,这里返回的值为int,所以类型名就是int。

3.形式参数与实际参数

  1. 形式参数:定义函数时参数列表那里的参数,简称形参。
  2. 实际参数:调用函数时,实际传进去的参数,简称实参。

我们在调用函数时,计算机会将实参的值传递给被调用函数的形参,然后执行函数
:形参和实参之间的传递是值传递

  • 例:
    在这里插入图片描述
    输出结果是这样子的:
    在这里插入图片描述

4.使用return接收函数的返回值

我们在上面的例子中已经使用了return 我们现在详细讲解一下

  1. return出现的位置是在定义函数时,作用是将函数执行的结果返回
  2. 当函数有返回值时,在调用函数的时候,需要用一个变量接收返回值
  3. 使用return有两个数据类型需要注意
  • 定义函数时,函数的类型要和返回值类型一致;
  • 调用函数时,接收返回值的变量,需要和返回值类型一致。
    我们如果返回了一个最大的int型,那么我们在实际调用时,就需要定义一个int型的maxnum变量来接收。

5.函数声明

在C语言中,我们使用函数,就需要提前对函数进行声明,就像是提前和计算机打招呼,让他做好准备。

  1. 如果使用printf()等库函数的话,我们就需要在程序开头使用#include指令
  2. 如果我们使用我们自己定义的函数,声明方式如下
    函数类型 函数名(形参列表);
    我们将函数定义在main函数之前的话,由于C语言顺序执行的特点,在使用计算机时就见过这个函数了,所以不声明也可以。
    如果你将函数定义在了main函数之后的话,那么函数就需要声明。

意气风发,漫卷疏狂
学习是成长的阶梯,每一次`的积累都将成为未来的助力。我希望通过持续的学习,不断汲取新知识,来改变自己的命运,并将成长的过程记录在我的博客中

如果我的博客能给您带来启发,如果您喜欢我的博客内容,请不吝点赞、评论和收藏,也欢迎您关注我的博客。
您的支持是我前行的动力。听说点赞会增加自己的运气,希望您每一天都能充满活力!

愿您每一天都快乐,也欢迎您常来我的博客。我叫意疏,希望我们一起成长,共同进步。
logo
我是意疏 下次见!

标签:教程,定义,调用函数,C语言,返回值,类型,新手,形式参数,函数
From: https://blog.csdn.net/2302_79751907/article/details/140945943

相关文章

  • C语言字符数组,字符指针,指针数组(字符串)的比较与使用
    参考文档https://blog.csdn.net/yuabcxiao/article/details/89600907 字符数组与字符指针在C语言中,可以用两种方法表示和存放字符串:(1)用字符数组存放一个字符串charstr[]="Iamhappy";(2)用字符指针指向一个字符串char*str="Iamhappy";字符数组#include<iostrea......
  • 使用xshell连接阿里云远程服务器(图文教程)
     1.参考资料:阿里云官方帮助资料: https://help.aliyun.com/document_detail/71529.html?spm=a2c4g.11186623.6.616.JqUSgl2.准备条件:   1).登录阿里云官网,申请阿里云ECS服务器       请参考网上其他教程,或者自己申请一下就好。   2).下载Xshell客户......
  • DevExpress WPF中文教程:如何在GridControl中对数据排序、分组、过滤?
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。无论是Office办公软件的衍伸产品,还是以数据为中心......
  • windows平台中使用vscode远程连接linux进行c++开发配置教程(内容详细适合小白)-2021-3-3
    文章目录一、简要介绍二、软件安装步骤1.linux系统安装2.vscode安装3.ssh安装4.配置Remote-SSH5.安装远程插件6.简单小测试三、配置vscode开发环境1.默认设置、用户设置、远程设置和工作区设置2.c++开发设置a).c_cpp_properties.jsonb).tasks.jsonc).launc......
  • 计算机毕业设计项目推荐,院系资料分类管理平台 84184(开题答辩+程序定制+全套文案 )上万
    目 录摘要1绪论1.1研究背景1.2研究意义1.3论文结构与章节安排2 院系资料分类管理平台系统分析2.1可行性分析2.2系统流程分析2.2.1数据增加流程2.2.2数据修改流程2.2.3数据删除流程2.3系统功能分析2.3.1功能性分析2.3.2非功能性分析......
  • 计算机毕业设计项目推荐,红色旅游网站设计与开发 99214(开题答辩+程序定制+全套文案 )上
    摘 要21世纪时信息化的时代,几乎任何一个行业都离不开计算机,将计算机运用于旅游服务管理也是十分常见的。过去使用手工的管理方式对旅游服务进行管理,造成了管理繁琐、难以维护等问题,如今使用计算机对旅游服务的各项基本信息进行管理,比起手工管理来说既方便又简单,而且具有易......
  • C语言 --- 指针
    目录1. 概念2.指针变量初始化2.1被调修改主调 2.2 指针变量的引用3.指针+一维整型数组3.1指针的运算4.指针+一维字符型数组4.1指针+字符串1. 概念指针就是地址 --- 内存单元的编号指针也是一种数据类型---这种数据类型专门用来处理地址......
  • C语言菜鸟入门·数据结构·链表超详细解析
     目录1. 单链表1.1 什么是单链表1.1.1  不带头节点的单链表1.1.2 带头结点的单链表1.2 单链表的插入1.2.1 按位序插入(1)带头结点(2)不带头结点1.2.2 指定结点的后插操作1.2.3 指定结点的前插操作1.3 单链表的删除1.3.1 按位序删除1.3.2 指......
  • C语言----字符串的匹配
    字符串的匹配实例说明:        本实例实现对两个字符串进行匹配操作,即在第一个字符串中查找是否存在第二个字符串。如果字符串完全匹配,则提示匹配的信息,并显示第二个字符串在第一个字符串中的开始位置,否则提示不匹配。实现过程:        (1)在TC中创建一个C文......
  • 嵌入式初学-C语言-十七
    #接嵌入式初学-C语言-十六#函数的递归调用含义:在一个函数中直接或者间接调用了函数本身,称之为函数的递归调用//直接调用a()->a();//间接调用a()->b()->a();a()->b()->..->a();递归调用的本质:本是是一种循环结构,它不同于之前所学的while,do-while,for这......