C语言—static 的作用、局部变量全局变量、内存结构、堆栈区别

static

在C语言中,static主要定义全局静态变量,定义局部静态变量,定义静态函数

一、定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量。 全局静态变量有以下特点:
(1)在全局数据区内分配内存
(2)如果没有初始化,其默认值为0
(3)该变量在本文件内从定义开始到文件结束可见(这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。)

二、 定义局部静态变量:在局部静态变量前面加上关键字static,该局部变量便成了静态局部变量。静态局部变量有以下特点:
(1)该变量在全局数据区分配内存
(2)如果不显示初始化,那么将被隐式初始化为0,若初始化,则static修饰的静态局部变量只初始化一次
(3)它始终驻留在全局数据区,直到程序运行结束,延长了局部变量的生命周期,直到程序运行结束以后才释放。
(4)其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束。

三、定义静态函数:在函数的返回类型加上static关键字,函数即被定义成静态函数。静态函数有以下特点:
(1)静态函数只能在本源文件中使用
(2)在文件作用域中声明的inline函数默认为static
说明:静态函数只是一个普通的全局函数,只不过受static限制,他只能在文件坐在的编译单位内使用,不能呢个在其他编译单位内使用。


局部变量全局变量

区别:
(1)局部变量只在本函数范围有效,在此函数以外是不能使用这些变量;全局变量的有效范围是从定义变量的位置开始到本源文件结束。
(2)局部变量是程序运行到该函数时给该变量分配内存空间,函数结束则释放该内存空间;全局变量是程序运行时事先分配内存空间,当程序结束时释放内存。

重名问题:
可以重名,局部会屏蔽全局。C中无法使用全局变量。要用全局变量,需要使用 :: 并将编译器换成C++的。Demo:

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值