嵌入式之家

 找回密码
 现在注册

QQ登录

只需一步,快速开始

搜索
热搜: ARM cortex
查看: 6641|回复: 2

static和extern

[复制链接]

该用户从未签到

32

主题

81

帖子

771

积分

高级会员

Rank: 4

积分
771
发表于 2016-3-28 19:57:56 | 显示全部楼层 |阅读模式
extern:不能定义一个变量,是外部存储类型,是全局变量,表示的是已经存在一个变量,这个变量在别处定义,但是不在当前的编译单元内,需要在其他编译单元中寻找,引用的外来变量。   对于extern变量来说,仅仅是一个变量的声明,其并不是定义,不会分配内存空间.
static:可以定义一个变量,静态存储类型,属于局部变量,只能在当前函数内使用,在其他函数内使用就是错误。
static
1、定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量。全局静态变量有以下特点。
        a.在全局区分配内存。
        b.如果没有初始化,其默认值为0.
        c.该变量在本文件内从定义开始到文件结束可见。
2、定义局部静态变量:在局部变量前面加上关键字static,其特点如下:
        a.该变量在全局数据区分配内存。
        b.它始终驻留在全局数据区,直到程序运行结束。
        c. 其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束。
3、定义静态函数:在函数返回类型前加上static关键字,函数即被定义为静态函数,其特点如下:
        a.静态函数只能在本源文件中使用
        b.在文件作用域中声明的inline函数默认为static类型

回复

使用道具 举报

该用户从未签到

55

主题

168

帖子

1767

积分

金牌会员

Rank: 6Rank: 6

积分
1767
发表于 2016-3-29 10:49:50 | 显示全部楼层
回复

使用道具 举报

  • TA的每日心情
    开心
    2020-6-18 22:00
  • 签到天数: 1 天

    [LV.1]初来乍到

    101

    主题

    192

    帖子

    1645

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    1645
    发表于 2016-4-8 15:36:44 | 显示全部楼层
    第二条比较有用,可以做到函数中定义的变量不被释放
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 现在注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|嵌入式之家 ( 京ICP备14038168号-1 )

    GMT+8, 2025-5-1 17:17 , Processed in 0.020612 second(s), 26 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表