温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C语言中怎么使用static关键字

发布时间:2021-07-02 16:26:31 来源:亿速云 阅读:302 作者:Leah 栏目:互联网科技

C语言中怎么使用static关键字,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

C语言的关键字static在有三个作用:声明静态函数,声明静态全局变量,声明静态局部变量

声明静态函数

    在函数的返回类型前加个static,就是静态函数了。静态函数只能在声明它的文件中使用,其他文件看不到它。而不同的文件可以使用相同名字的静态函数,互不影响。非静态函数可以在另一个文件中直接引用,甚至不必使用extern声明

C语言中怎么使用static关键字


声明静态全局变量
    全局变量定义在函数体外部,编译器会自动对其初始化。普通全局变量,对整个Kernel可见;而静态全局变量仅对当前文件可见,其他文件不可访问。因此,如果定义的全局变量(或函数)不需要与其他文件共享,建议加上static来降低程序之间的耦合。

声明静态局部变量
    局部变量就是函数内部定义的变量,其作用域比全局变量小很多。编译器一般不对普通局部变量进行初始化,也就是说它的值在初始时是不确定的,除非对其显式赋值。而使用了static的静态局部变量,即使在声明时未赋初值,编译器也会把它初始化为0。而且静态局部变量的存储位置也不同,即使函数返回了,它的值也会保持不变

C语言中怎么使用static关键字

再把它们的地址与系统内存布局对比一下


得出以下结论:

  • 1 静态函数在Shell里不可见,全局函数在Shell里可见

  • 2 不管哪种函数,都存储于系统的文本段中

  • 3 有初值的全局变量(无论是否静态变量),以及有初值的静态局部变量,存储于系统的数据段中

  • 4 无初值的全局变量(无论是否静态变量),以及无初值的静态局部变量,存储于系统的BSS段中,被初始化为0

  • 5 局部变量(非静态,无论有无初值),存储于任务的栈中。如未赋初值,则使用0xeeeeeeee

看完上述内容,你们掌握C语言中怎么使用static关键字的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI