声明与定义
定义:创建一个对象,并为这个对象分配一块内存命名
【注意】一个变量或对象在一定的区域内只能被定义一次
声明:两重含义
一、 告诉编译器某个名字已经匹配到一块内存上了。声明可以多次出现
二、告诉编译器某个名字已经被占用了,其他的地方不能再用这个名字来作为变量名或对象名
static 与 extern
static: 指该变量空间独立于函数中的auto变量或者栈变量,static变量空间在内存中的静态区分配。
一、修饰局部变量
如果用static进行修饰,该变量便存放在静态数据区,其生命周期直持续到整个程序执行结束为止【注意】虽然用static对局部变量进行修饰后,其生命周期和存储空间发生了变化,但是作用域并没有改变
在用static修饰局部变量后,该变量只在初次运行时进行初始化工作,且只进行一次。
左边这个程序的执行结果是 2 3 右边这个程序的执行结果是 2 2
我对这个程序的理解是:只在第一次调用的时候给a初始化1,第二次调用的时候就不进行初始化了,“这也就是 在用static修饰局部变量后,该变量只在初次运行时进行初始化工作,且只进行一次” 当我把static去掉了以后 每次调用fun函数的时候就会对a进行初始化。
二、修饰全局变量
在定义全局变量时,给变量之前加上static 这个变量就只能在本源文件里使用,也就是说改变了变量的作用域
三、修饰函数
用static修饰函数,和修饰全局变量的情况差不多,也是改变了函数的作用域
extern:指当前变量或函数不是在本源文件内声明的,它是外部变量或外部函数
在任何函数体外声明或定义变量,不加external可能是定义也可能是声明,如果没有初始化则在其中任选一个作为定义其他为声明。在函数体内声明【在函数体内部不能定义外部变量】 使用其他源文件中定义的变量时,必须用extern关键字 ,在函数体内默认为局部变量。
【注意】在写程序是要注意外部函数的参数类型、参数个数和返回值类型,最好保持一致。
const
只要在变量前加上const 就表示该变量里的数据不能被修改。 const不仅仅可以用来修饰基本类型,还可以修饰一些构造类型及其参合体(数组、指针、指针数组、结构体数组、结构体指针数组等)
auto
auto的出现意味着当前变量的作用域为当前函数或代码段的局部变量,意味着当前变量会在内存栈上进行分配
在这里我对战的操作有点不明白,尤其是图2-8-1那个程序没看明白
329

被折叠的 条评论
为什么被折叠?



