文中内容是我近期学习c语言所留下来的笔记,上传平台是为了保存防止误删造成笔记丢失,自学不易,跪求浏览笔记的朋友给个赞
全局变量
定义在哈数外面的变量是全局变量
全局变量有全局的生存期和作用域
他和任何函数都无关,但所有的函数都可以访问全局变量
在任何函数内部都可以使用他们
全局变量的作用域是全局,即所有函数都可以对其访问操作
全局变量若没有得到初始化会自动默认为0,如果全局变量是指针的话会得到NULL
只能用编译时刻已知的值来初始化全局变量同时不能用变量来赋值给全局变量除非在变量名前加const
他们的初始化发生在main函数之前
如果函数内部有和全局变量同名的变量,则全局变量被隐藏
静态本地变量
在本地变量的定义时加上static修饰符就成为了静态本地变量
当函数离开时,静态本地变量会继续存在并保持其值
静态本地变量的初始化指挥在第一次进入这个函数时做,以后进入函数时会保持上次离开时的值
静态本地变量实际上是特殊的全局变量
他们位于相同的内存空间
静态本地变量举有全局的生存期,函数内的局部作用域
static在这里的意思时局部作用域(本地可访问)
返回指针的函数
返回本地变量的地址是危险的,本地变量的地址可能被占用,因为本地变量的生存期过了就相当于这个变量没了,可以传入新的变量在旧的变量地址上。就像是租房子一样
返回全局变量或者静态本地变量的地址是安全的
返回在函数内malloc的内存是安全的,但是容易造成问题
最好的做法时返回传入的指针
小提醒
不要用全局变量来在函数间传递参数和结果
尽量避免使用全局变量
使用全局变量和静态本地变量的函数是线程不安全的