11.全局变量(static)

时间:2022-06-22 19:31:54

1.数组

数组名是常量

2. 指针数组

11.全局变量(static)

4.局部变量

(1).作用域

作用的范围;

(2).普通局部变量

在{}内定义;

只有执行到定义变量的这个语句,系统才会给这个变量分配空间。

当离开{},这个非static局部自动释放;

局部变量的作用域在当前{},离开此{},无法使用变量;

{}里的普通局部变量,加不加auto关键字等价,普通局部变量也叫自动变量;

在不同{}里的变量名字可以一样。

普通局部变量,加不加auto都一样,普通局部变量也叫自动变量!

11.全局变量(static)

(3).static局部变量

static局部变量,是在编译阶段就已经分配空间,函数没有调用它就已经存在;

当离开{},static局部变量不会释放,只有程序结束,static变量才会自动释放;

静态局部变量不初始化,它的默认值为零;

static局部变量初始化语句,只会执行一次,但是可以赋值多次;

static只能使用常量初始化;

普通局部变量和static局部变量的区别:

1.内存分配和释放的区别;

a).普通局部变量只有在执行到定义变量的语句才分配空间;

b).static局部变量在编译阶段(函数还没执行),变量就已经分配空间;

c).普通局部变量离开作用域{},自动释放内存空间;

d).static局部变量只有在整个程序结束后才自动释放;

2.初始化

a).普通局部变量不初始化时,值为随机数;

b).static局部变量不初始化,值为零;

c).static局部变量初始化语句只有第一次执行时有效;

d).static局部变量只能用常量初始化。

5.普通全局变量(外部链接)

1.在{}外面定义,定义的变量为全局变量;

2.只有定义了全局变量,在任何地方都能使用此变量;

3.如果使用变量时,再前面找不到此全局变量的定义,需要声明才能使用(extern);

4.全局变量不初始化,默认赋值为0;

5.声明只是针对全局变量,不是针对局部变量;

6.只能定义一次,声明多次;

7.全局变量在编译极端就已经分配内存空间(函数没有执行前),只有在整个程序结束,才自动释放;

//1.定义一个全局变量,同时初始化 ;
int a = ;
//2.如果声明一个全局变量,尽量用extern声明;
extern int a;

6.static全局变量(内部链接)

a)static全局变量和普通全局变量的区别就是作用域不一样(文件作用域)

b)extern关键字只适用于普通全局变量

c)普通全局变量,所有的文件都能使用,前提需要声明

d)static全局变量只能本文件使用,别的文件不能使用

e)不同的文件只能出现一个普通全局变量的定义

f)一个文件只能有一个static全局变量的定义,不同文件间的static全局变量名字一样,也是两个不相同的变量

(5).普通函数和static函数的区别