C++学习笔记day10-----标准C语言

递归函数:

自己调用自己的函数。

递归函数用来解决那些可以分步处理,每一步处理问题的方法一致的问题。

注意,递归函数必须有推出递归的条件,否则会无限调用,直到溢出。

递归函数还是需要多练习的。


变量的生命周期和作用域:

局部变量:

声明在函数内部或者代码块内部的变量叫做局部变量。

局部变量的作用域仅仅在声明它的那块函数或者代码块,这个范围外的所有语句都是不能使用它的。

它的生命周期就是函数或者代码块的执行时间。一旦函数或者代码块结束,这个变量也就被计算机释放了。

全局变量:

声明在所有函数外部的变量叫做全局变量。

这个程序的所有语句都是可以使用这个全局变量,这就是它的作用域。

全局变量的声明周期是跟随程序的,只要程序没有结束,它就一直存在。

全局变量如果没有显示的初始化,计算机会将它初始化成0,这一点和局部变量不同。


关键字:static

static是声明静态变量的关键字。

静态局部变量:

在函数或者代码块内声明局部变量的时候,在类型前加上这个关键字就可以声明为静态局部变量。例如:static int num =1;

静态局部变量的作用域和局部变量一样, 在所声明的函数或者代码块内。

静态局部变量的生命周期被延长,直到程序结束,它才会被释放。(这就导致,第二次调用声明它的那个函数的时候,它的值沿用上一次函数退出时的值)

静态局部变量在程序起来的时候就会被初始化,而且只初始化一次。之后无论怎么调用这个函数,它都不会再变为初始化的值。

这种变量在递归函数中非常实用。

静态全局变量:

在全局变量前加上这个关键字就可以声明为静态全局变量。

静态全局变量只能在声明它的那个文件里使用,如果程序是由多个.c文件组成,那么这个参数在其他文件是无法使用的。

静态全局变量的生命周期,跟随程序。只有程序结束的时候,才会释放它。


全局变量和局部变量是可以重名的。当有这样的情况的时候,在局部变量的作用范围内,这个变量是优先指代局部变量。


指针变量:

指针变量,只用于记录变量的地址。

指针变量的声明:int *p;

1、指针的类型其实没有什么那么重要。比如一个声明用于指向int型的指针,是可以指向一个char类型的变量的。

但是!!!尽量不要这么用,虽然可以,但是取指针内容或者其他操作的时候,可以需要用到类型的强制转换之类的操作!

2、声明语句中的*,其实是没有运算的,它仅仅是用来声明一个指针变量的。

但是!!!在声明之后的语句里,对这个指针使用*运算符的时候,就是取它所代表的地址的内容的意思了。


野指针,空指针。

野指针:指针指向了程序不知道的地址,没有规律,无法利用,这种指针就是垃圾,不能用。一定要保证自己的程序没有野指针。

空指针:int *p = NULL; 在C语言中NULL是一个关键字,它的值就是0。把它赋给指针就是让指针什么都不指向。所以叫它空指针。所有的指针一定要显式的初始化,没什么可以指向的,就把它变成空指针!


指针至于变量,就像是变量至于常量。

我们运算的时候,不知道具体需要用什么值就用变量代替,这个时候我不关心变量内容是什么。

同理,我在用指针的时候,可能会事先就安排好这个指针需要被怎么操作,但是我不关心指针指向哪一个变量,反正指到谁就用谁去操作。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值