打印
[STM32F1]

static修饰全局变量、局部变量及函数的用法

[复制链接]
1076|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
李业明|  楼主 | 2021-1-13 15:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.static修饰全局变量    在全局变量前加static,全局变量就被定义成为一个全局静态变量。
    特点如下:
   1)存储区:静态存储区没变(静态存储区在整个程序运行期间都存在);
   2)作用域:全局静态变量在声明他的文件之外是不可见的。准确地讲从定义之处开始到文件结尾。非静态全局 变量的作用域是整个源程序(多个源文件可以共同使用); 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。

     好处:   
    1)不会被其他文件所访问,修改;
    2)其他文件中可以使用相同名字的变量,不会发生冲突。

2.static修饰局部变量    在局部变量之前加上关键字static,局部变量就被定义成为一个局部静态变量。
    特点如下:
  1)存储区:有栈变为静态存储区rw data,生存期为整个源程序,只能在定义该变量的函数内使用。退出该函数后, 尽管该变量还继续存在,
        但不能使用它;
  
  2)作用域:作用域仍为局部作用域,当定义它的函数或者语句块结束的时候,作用域随之结束。

3. static修饰函数     在函数的返回类型前加上关键字static,函数就被定义成为静态函数。
     函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用
     好处:
    1)其他文件中可以定义相同名字的函数,不会发生冲突
    2) 静态函数不能被其他文件所用。

使用特权

评论回复
沙发
xyz549040622| | 2021-1-13 17:38 | 只看该作者
支持下,更正了一下我以前错误的看法,**收藏了。

使用特权

评论回复
板凳
jackhwang| | 2021-1-14 10:46 | 只看该作者
进来学习了,长知识

使用特权

评论回复
地板
zchong| | 2021-1-15 08:01 | 只看该作者
c语言教材

使用特权

评论回复
5
kxsi| | 2021-2-4 20:57 | 只看该作者
楼主介绍的非常详细

使用特权

评论回复
6
nawu| | 2021-2-4 20:58 | 只看该作者
恶补了基础知识

使用特权

评论回复
7
qcliu| | 2021-2-4 21:00 | 只看该作者
基本功不扎实啊

使用特权

评论回复
8
tfqi| | 2021-2-4 21:05 | 只看该作者
受教了 感谢楼主分享

使用特权

评论回复
9
wiba| | 2021-2-4 21:10 | 只看该作者
哪里和以前不一样了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

35

帖子

0

粉丝