9.28----9.29创作
1:递归调用
递归调用主要是不断在函数内使用函数,有两个使用条件(之前写代码的时候没有注意这两点导致没想明白)
具体实例1:斐波那契的实现
着重在函数内部利用fob(a-1)*a的返回值实现
实例2:输入一个多位数,将每一位顺序打印
逆序打印
重点在递归调用的逻辑----停止打印的条件;还有就是如何调用,在print函数里面如何进行运算使得数值符合结束条件
2.指针1
最简单的指针变量定义,此时b储存a变量地址,用p打印,若要打印a,则是直接打印b变量.
3/指针2
知识点1:const修饰指针
const在*右侧,b变量无法改变,可以通过*b改变指针变量的数值
const在*左侧,*b无法被改变
知识点2:野指针的出现与避免
三类都会使编译器报错,无法完成调试
如何避免?
1:使用NULL将指针定义
此时代码无报错
2:assert断言
宏定义assert定义指针是否为野指针
4:传值调用和传址调用
实例:利用指针变量进行俩个数值的转换
我们先定义两个整形变量,定义函数的时候,将两者的地址带进函数中(重点),函数内用指针变量进行调换达到目的.
若单纯传值调用:
则发现传值调用未实现功能,核心是因为两个变量的地址并没有改变,交换仅仅是数值交换,地址仍然保持不变
总结:
传址调⽤,可以让函数和主调函数之间建⽴真正的联系,在函数内部可以修改主调函数中的变量;所 以未来函数中只是需要主调函数中的变量值来实现计算,就可以采⽤传值调⽤。如果函数内部要改主调函数中的变量的值,就需要传址调⽤。
完