现在我们再举一个实例,这个实例大家要仔细地去理解,涉及到许多细节知识
我们的想法是输入两个整数,并且写一个函数交换两个数的值,但是结果为什么没有交换呢,下面给大家做详细讲解
我先把调试起来的截图放给大家看一下
这里的x和y有自己的独立的空间,大家观察a,b,x,y的地址可以看出他们四个的地址都是有所不同的,这里需要给大家讲解一个新的概念,见下图
实际参数--实参
形式参数--形参
形参是实参的一份临时拷贝,所以对形参的修改不会改变实参的值
这是我们要联想一下地址和指针的相关知识,指针和要交换的这两个变量是不是存在某种联系,
首先我们取出a的地址放在一个指针变量里面,等于说是把a的地址交给了形参,这就产生了联系,是不是很神奇???同理b也是相同的道理,下面我们将刚才的代码修改一下看一下修改结果是不是符合我们的理想状态
大家看,成功的交换了这两个值,所以,我们刚才的猜想是正确的,希望大家能够理解
如果大家看懂了我的文字讲解,那么现在大家看一下图解,巩固刚才学的知识
下一个知识点是函数的调用
特别注意最后一个函数的调用
get_max(4,8)返回一个最大值8
最后一个知识点是函数的嵌套调用和链式访问
这就是函数的嵌套调用,简单来讲就是一个相同的函数的重复调用
对于函数的链式访问我们给大家举一个例子,我们看代码
大家可以先尝试着用自己的理解去想一下结果为什么
这里我们来看一下printf这个函数
写的字符的完整的个数将会被返回,有几个字符就返回数字几,下面我们运行代码看一看
答案为4321,希望同学们能理解
我们为了把每个数字都看清楚,我们在每个%d后面加一个空格,结果会和上一个代码运行的结果一样吗???
大家看,空格也是一个字符,希望同学们能注意一下这个小小的细节
这就是这篇博客的主要内容
下一篇博客我们讲解函数初阶最后两部分,谢谢支持!!!