我们在昨天介绍了C语言入门的数组,

( ˘ ³˘)❤那么今天呢,我们就可以开始去了解C语言入门的函数了

一函数的概念。

C语言函数,用来编译C语言,一般包括字符库函数,数学函数,目录函数,进程函数,诊断函数,操作函数等。

在这里面呢,我一般将它分为自定义函数和

库函数,我们可以将函数更具体的去了解为一种子程序。




如果想具体的去了解函数;那我们就可以用Cprimer pius关于函数的描写

首先,什么是函数?函数(function)是完成特定任务的独立程序代码单元。语法规则定义了函数的结构和使用方式。虽然C 中的函数和其他语言中的函数、子程序、过程作用相同,但是细节上略有不同。一些函数执行某些动作,如printf()把数据打印到屏幕上;一些函数找出一个值供程序使用,如strlen()把指定字符串的长度返回给程序。

一般而言,函数可以同时具备以上两种功能。


为什么要使用函数?首先,使用函数可以省去编写重复代码的苦差。如果程序要多次完成某项任务,那么只需编写一个合适的函数,就可以在需要时使用这个函数,或者在不同的程序中使用该函数,就像许多程序中使用putchar()一样。其次,即使程序只完成某项任务一次,也值得使用函数。因为函数让程序更加模块化,从而提高了程序代码的可读性,更方便后期修改、



二,库函数

既然上面我们讲到了库函数和自定义函数,让我们先了解一下库函数。

C语言的库函数是一种现成的函数,也就是我们可以直接去使用。,包括了标准库和头文件。像我们前面所使用的scanf(),printf(),system()等等。


我们去学习这些库函数呢,可以去通过官方链接。或者一些应用~(^з^)-☆。

例如MSDN

或者是官方链接

C/C++官⽅的链接:https://zh.cppreference.com/w/c/header

cplusplus.com:https://legacy.cplusplus.com/reference/clibrary/

我们通过官方链接去了解一个函数printf()


C语言入门之函数----小白_库函数



他比较多,但是重要的我们可以去记这个函数的返回值


C语言入门之函数----小白_函数声明_02


如果这样加个空格,他又会打印成什么的?


C语言入门之函数----小白_函数声明_03


后面会再次出现这里就不说了


三,自定义函数

自定义函数,通俗的说这是我们自己造一种函数 ,

1,函数基本语法。

无论是自定义函数还是库函数,他们的语法形式都是一样的。依旧是

返回类型,加名字,加参数,加函数体。

举个例子加法的函数。

C语言入门之函数----小白_库函数_04




像这样的上面int,就是它的返回值是整形。ADD的就是他的名字。中间的int x和int   y都是参数,而在大括号里面的都是函数体。


关于返回值,当我们需要他返回给我们一个a+b的值,我需要他给我返回a+b的值。那我们就在前面写一个int,因为a和B我和设定里都是整型,如果我们不需要他返回一个值。我们可以使用void ,但是如果关于前面的返回值,我们并没有去写一个数据类型或者是void那么系统会默认他返回int,


C语言入门之函数----小白_自定义函数_05





如何去理解参数?当我们要去制作一个东西的时候。我们需要一点原材料。原材料在我们的手中变成了我们想要做的东西。原材料的就相当于参数。手就是我们的函数,


大括号中的函数体就是我们为了完成功能所写的程序。它主要就是函数完成我们想要完成的那个东西的过程。


2,C语言实参和形参

在 C语言中,形参(是指函数定义中用于表示参数的变量,它们位于函数名后面的括号中,我们要明白2点;

形参所定义的参数只能在我们所构建的自定义函数内使用,

形参存在的时候并不会向内存申请空间,只有实参传递过来的时候,才会向内存申请空间。

C语言入门之函数----小白_库函数_06

当我们进入定义的函数时

C语言入门之函数----小白_自定义函数_07



实参 ,是指函数调用中传递给函数的参数,一般就是我们main函数中例如

自己画的不要介意谢谢-- --

C语言入门之函数----小白_库函数_08


我们要了解到形参是实参的的一种临时拷贝,实参和形参所申请的空间也是不一样的我们可以通过调试窗口去看。



C语言入门之函数----小白_自定义函数_09

此时我们就可以造成一个疑问,当我们利用函数去交换两个数的值。应该怎么写?这里面的会使用暂时还没有说的指针,我们先将错误的例子写出来。

C语言入门之函数----小白_函数声明_10

当我们运行上面做出来的代码的时候,我们会发现a和B的值并没有发生交换。(#`゚д´)ノ

这就是因为行参和实参空间是不一样的。

当我们使用指针的时候。我们将a和B的地址传过去,写出下面这样的代码

ʕ⁀㉨⁀ʔ


C语言入门之函数----小白_自定义函数_11




我们就可以发现a和B的值发生了,交换。这里如果想要了解的话,可以提前去看关于指针的一些东西,之所以讲这个是希望能够理解到行参和实参的空间是不一样的。୧ʕ•̀ᴥ•́ʔ୨



当我们设计一个函数,它不需要我们传递参数的时候。我们可以在这个函数的后面的括号写一个void

int   add(void)

{


}

结合上面所学的,你们会发现当我们使用printf()和scanf()我们可以使用他们去打印多个数或者输入多个数。

printf("%d",100);

printf("%d %d",100,29);

scanf("%d",&a);

scanf("%d %d",&a,&b);


像这种的我们叫做可变参数,或者叫做可变参数列表,这里提出来,主要是大家能够先认识到以后会说的。


3,Return语句。

当我们去构建一个函数的时候,我们有时需要他返回一个值,那么这个时候我们就要使用return语句。

return在函数里面就是用来反的一个值的

通常我们有时候也会不需要他返回去,如果这时候我们要再写return,我们可以Return到后面什么都不写。




最重要的是我们要理解return语句执行之后,函数就返回了,后面的代码就不再执行。



四,数组和函数的使用。

我们在前面的文章讲述了数组,那数组怎么和函数使用?比如我们设置一个数组 ,然后呢,我们设计一个函数打印数组的值。

于是我们就完成了下面代码。

C语言入门之函数----小白_库函数_12



但是当我们使用这张代码的时候,我们再次使用调试窗口。我们会发现实参和行差所处的空间竟然是一模一样的  ,我们改变形式参数的数组就是改变实际参数的数组。۹( ÒہÓ )۶









为什么呢?大家可以自己了解。(ꈍ︹ꈍ๑✿)






五,嵌套调用和链式访问。

我们先了解一下两者的概念。

1,链试访问就是将一个函数的返回值作为另一个函数的参数,像链条一样将函数串起来。这个时候你就可以用上面printf的返回值来完成一个有趣的代码 


C语言入门之函数----小白_函数声明_02


为什么会打印4321呢;printf()的返回值是

成功后,将返回写入的字符总数,使用当我们加上空格

C语言入门之函数----小白_函数声明_03

空格也是字符



嵌套调用的就是在我们所创建的函数中,去使用我们创建的其他的函数。

假设我们计算某年某⽉有多少天?,如果要函数实现,可以设计2个函数:

C语言入门之函数----小白_库函数_15


C语言入门之函数----小白_函数声明_16



最后补充说明函数的声明和定义

当我们使用vs去写函数代码的时候,我们通常将自定义函数和自己的main函数放到不同的文件里。main函数一般我们放到源文件里面。使用点C作为结尾。即.c

关于函数的声明,我们会在头文件里面创建一个新的项目,以.h结尾

我们一般会写到点h的头文件里面。


而自定义函数函数定义我们一般放到头文件里,当我们要使用头文件里面的函数是我们可以使用。include"自定义函数的名字"去使用我们这个文件比如我们上面Add.

include"add.h"去使用我们所构建的这个函数


C语言入门之函数----小白_库函数_17



原本是打算将这两个函数再发一篇文章去讲的。但是个人比较懒(¬▂¬)

就在后面补充说了,详细的会在下篇文章说

1,static可以修饰局部变量,全局变量或者是函数。

2,extern主要是用来声明的。


extern 是⽤来声明外部符号的,如果⼀个全局的符号在A⽂件中定义的,在B⽂件中想使⽤,就可以使

⽤ extern 进⾏声明,然后使⽤。



最后点点赞---又是进步的一天

C语言入门之函数----小白_库函数_18


阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6