const、extern、static的使用不再神秘

213 阅读2分钟

验证const:

验证extern:



extern的作用是在程序中引入一个全局变量,比如 extern int age;当然这个age变量名在整个程序中只能有一个,否则会发生冲突。而且无论在哪个文件中引入这个变量,都可以改变他的值。需要注意的是,如果这个全局变量被static修饰,那么这个全局变量的作用域仅限于当前文件,此时如果在其他文件中定义一个同名的全局变量便是可以的而不会发生冲突。


static的作用
1.修饰局部变量
*让局部变量只初始化一次
*局部变量在程序中只有一分内存
*不会改变局部变量的作用域,仅仅改变他的生命周期(知道程序结束这个变量才会销毁)
2.修饰全局变量
*修饰的全局变量的作用域仅限于当前文件
*如果不想被extern的方式在其他文件中被访问改变值,那么就在全局变量前加static修饰,这是为安全起见。


总结static
1.修饰局部变量是为了使它永远都存在而且永远只有一份内存,当然它的值在作用域内可以被改变,主要为了节省内存空间。
2.修饰全局变量就是为了安全,不被其他文件访问和改变值。
总结const
1.修饰*p,则*p就是个常量,则内存不能改变
2.修饰p不带前面的*,则p就是个常量,则指向的内存地址不能改变,注意不是内存地址中的值。
总结extern
1.这个可以简单地理解为,引入一个变量,这个变量可以是本文件中的全局变量(被不被static修饰均可),也可以是其他文件中的全局变量(不能被static修饰,因为被static修饰的全局变量作用域仅限于当前文件)。引入这个变量就是为了访问这个变量,甚至可以改变它的值。