其实我们在看计算机的概念的时候是很难看懂的,我们后面用代码给大家演示,同学们也可以尝试理解一下上图函数的概念
C语言中把常用的功能进行了封装,封装成一个个的函数,提供出来大家使用
比如:scanf printf strlen strcmp rand srand time
C语言并不去直接实现库函数,而是提供了C语言的标准和库函数的约定功能,名字,参数,返回值
库函数一般是由编译器去实现(比如:VS2022 gcc)
那么我们怎么学习C语言库函数呢,下面给大家一个链接,此链接能够查到C语言库函数
www.cplusplus.com
打开后如下图
下图简单总结一下
下面我们参照文档来学习两个函数
首先看第一个
这个是函数的介绍
如果阅读能力有限 你可以将其转化为中文方便你阅读
第二个函数
在我们计算机中有个词叫memory,我们一般把他叫为内存,并非记忆
void*是一种指针,int是整型值,size_t整型值,返回类型void*也是个指针
Fill block of memory填充内存块
下面我们直接上代码来看个实例
这里特别注意,我们使用memset函数需要引头文件#include<string.h>
见下图
大家了解到这里应该对函数有了初步的认识,我们接着往下走
我把这三个库函数网站链接放在下面供大家使用
www.cplusplus.com
http://en.cppreference.com(英文版)
http://zh.cppreference.com(中文版)
自定义函数和库函数一样:有函数名,返回类型,函数参数
下面我们上实例写一个自定义函数
这种情况我们没有使用自定义函数实现最大值的查找,下面我们用自定义函数来实现,看下图代码
这里是函数的调用,返回一个整型的z
现在我们再举一个实例,这个实例大家要仔细地去理解,涉及到许多细节知识
我们的想法是输入两个整数,并且写一个函数交换两个数的值,但是结果为什么没有交换呢,下面给大家做详细讲解
我先把调试起来的截图放给大家看一下
这里的x和y有自己的独立的空间,大家观察a,b,x,y的地址可以看出他们四个的地址都是有所不同的,这里需要给大家讲解一个新的概念,见下图
实际参数--实参
形式参数--形参
形参是实参的一份临时拷贝,所以对形参的修改不会改变实参的值
这是我们要联想一下地址和指针的相关知识,指针和要交换的这两个变量是不是存在某种联系,
首先我们取出a的地址放在一个指针变量里面,等于说是把a的地址交给了形参,这就产生了联系,是不是很神奇???同理b也是相同的道理,下面我们将刚才的代码修改一下看一下修改结果是不是符合我们的理想状态
大家看,成功的交换了这两个值,所以,我们刚才的猜想是正确的,希望大家能够理解
如果大家看懂了我的文字讲解,那么现在大家看一下图解,巩固刚才学的知识
下一个知识点是函数的调用
特别注意最后一个函数的调用
get_max(4,8)返回一个最大值8
最后一个知识点是函数的嵌套调用和链式访问
这就是函数的嵌套调用,简单来讲就是一个相同的函数的重复调用
对于函数的链式访问我们给大家举一个例子,我们看代码
大家可以先尝试着用自己的理解去想一下结果为什么
这里我们来看一下printf这个函数
写的字符的完整的个数将会被返回,有几个字符就返回数字几,下面我们运行代码看一看
答案为4321,希望同学们能理解
我们为了把每个数字都看清楚,我们在每个%d后面加一个空格,结果会和上一个代码运行的结果一样吗???
大家看,空格也是一个字符,希望同学们能注意一下这个小小的细节
这就是这篇博客的主要内容
下一篇博客我们讲解函数初阶最后两部分,谢谢支持!!!