21年3月31日C语言概述(五)
1. static >> 静态关键字 (静态变量,就是static修饰的变量)
2. static如何实现只初始化一次的
3. static作用域
4.const
5.boold的假有哪些
6.将亡值
7.在多线程下,static安全吗?
1. static >> 静态关键字 (静态变量,就是static修饰的变量)
>> 静态变量只初始化一次,它可以延长生命周期(特性)
>> 它在数据区开辟空间
函数内的变量,局部变量,开辟在栈区
函数外的变量,全局变量,开辟在数据区
>> 当静态变量在函数内部的时候,它任然在数据区开辟空间(特性)
>> 我把它理解成这是个异类,它是函数内的不死变量,不会随着函数的调用周期而销毁。(理解方式)
2. static如何实现只初始化一次的
static通过内存位来做记录,初始化前标志为0,初始化后标志为1
通过检查这个标志实现初始化一次
3. static作用域
对于静态局部变量,static改变了生存周期,作用域为函数内
对于静态全局变量,static改变了可见性,作用域为本文件内
所谓改变可见性,是说这个静态全局变量,只在当前的.cpp中可以用。 >> 可理解成私有
4.const
const对变量声明为只读特性, >> 可读 不可写
记住,没有 可写 不可读 的玩意
5.boold的假有哪些
false >> 0 (数字0) >> '\0' >> NULL (空指针)
上述4个是假,除此之外的都是真
bool可用减一实现震荡 (因为真假在切换)
6.将亡值
将亡值 >> 存储在空间 >> 只能读其值,不能对其赋值
当调用某个函数,执行完了之后的返回值就存于临时空间,这个返回值就是将亡值。
把这个值一读取,临时空间就消亡了 (读取方式可以是 用该函数的返回值 进行赋值操作)
一个区分 左值和右值 的便捷方法:
看能不能对表达式取地址,若能,则为左值,若不能则为右值。所有的具名变量都是左值,而右值是不具名的。
7.在多线程下,static安全吗?
不安全,具体后期分析。
还有异变关键字