重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

C语言变量类别-创新互联

目录

创新互联主要从事网站设计制作、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务余姚,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108

局部变量的认识:

自动变量(栈区变量)特性:

静态存储区与全局变量:

全局变量的声明和定义:

static静态全局变量:


局部变量的认识:

什么是内存分区?

分为5个区:栈区,堆区,全局静态区,字符常量区,代码区。

前景回顾:

1、什么是栈区?内存由系统申请,由系统释放(int a,中的a,就是存在于栈区,同时也可以叫自动变量)。

2、什么是堆区?内存由我们申请,由我们释放。

                                                                       

什么是自动变量(栈区变量/局部变量)指的是一个东西,三个名字:

种类:1、int a;

2、int a[4];

3、int *p;(malloc的空间不是变量)

指针它是栈区的,它所指向的是malloc返回的首地址,也就是栈区(*p)里面装了堆区。

4、struct AAA a[3];

局部变量/栈区变量:

栈区变量/局部变量,一定是定义在{}内。({}内是代码段)

比如函数内,函数形参,if,for,while,switch,do while的结构内

都有花括号,只要是有花括号,就是一个封闭的代码段。

注意:

结构体的花括号的成员可不是局部变量的意义。

自动变量(栈区变量)特性:

1、生命周期:从定义,到花括号结束,给便来给你被自动释放。

2、作用域:所在花括号,除了花括号,名字就没用了,所以叫局部变量,局部起作用。

有图有真相:

局部变量的特点:

auto:自动变量是有auto来修饰的,由于平时写的太多了,每次都写有浪费时间,所以默认不屑跟写了是一样事儿的,自动有。这个auto就叫存储类型说明符,说明变量a是栈区存储的。

auto int a;(显式)

int a;(隐式)

1、函数形参也是局部变量:

void fun(int);//函数声明的作用域

就是这一行,所以可写可不写

void fun(int a)

{

}//定义函数的a的作用域是从定义开始到函数结尾。

2、函数不能返回局部变量地址:

3、同一个作用域内,变量不能重名:

一山不容二虎(专业名词是:屏蔽);

4、不同的作用域内,可以重名,作用域嵌套,在小作用域内,小的起作用,覆盖大的。

5、作用域无关系,即,没有任何关系。

注意此程序:外a的作用域和内a的作用域

静态存储区与全局变量:

特点:

1、内存区域:静态区域/静态全局区/静态存储区。

2、内存特点:

(1)会被自动初始化为0(如下)

(2)生命周期与程序共存亡

(3)运行时,在加载资源阶段分配空间

加载资源区:软件运行期间所必要的一些东西

全局变量外部变量的位置:写在全局的位置

全局变量自动初始化为0,指针,基本数据类型。结构体都一样。

全局变量和局部变量重名,在局部位置的变量才是有效的。(跟上一节的一样)

(全局变量未完)

全局变量的声明和定义:

全局位置的注意点:不能写一些执行语句,只能写一些声明初始化(常量)

比如:

1、printf()报错

2、malloc报错

3、int e = a+2;DEV不会报错

全局变量的生命周期是与程序共存亡的。

定义只能有一个,声明也只能有一个,但是函数可以声明多个,但同时也只能定义一个。

extern:

static静态全局变量:

什么是静态全局变量?顾名思义,就是将全局变量变成静态的。

即加上一个存储类说明符struct。

生命周期与程序共存亡。

作用域,只在所在的文件内有效,别的文件用不了

_____________________________________________________________________________

由于本人才疏学浅,如果读者有任何意见,请积极指出!

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享名称:C语言变量类别-创新互联
文章起源:http://cqcxhl.cn/article/coojpo.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP