900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > c语言字面量的作用是为变量 C语言(五) C 全局变量 局部变量 静态变量和常量...

c语言字面量的作用是为变量 C语言(五) C 全局变量 局部变量 静态变量和常量...

时间:2019-01-25 01:56:24

相关推荐

c语言字面量的作用是为变量 C语言(五) C 全局变量 局部变量 静态变量和常量...

一. 全局变量

全局变量是在所有函数体的外部定义的,程序的所有部分(其他文件的代码)都可以使用。全局变量不受作用域的影响。全局变量的生命周期一直到程序的结束,全局变量是静态存储方式。

例:

#include #include /* a 就是一个全局变量*/

int a = 2;

int main(int argc, char *argv[]) {

printf("int 存储大小 : %d \n", a);

return 0;

}

如果在一个文件中使用extern关键字来声明另一个文件中存在的全局变量,那么这个文件可以使用这个变量。

例:

在a.c中定义一个全局变量

#include #include int a = 3;/*定义在a.c文件中的全局变量a*/

在main.c中使用extern关键字引用a.c中的全局变量a

#include #include /* 使用extern管金子引用a.c中的全局变量a*/

extern int a;

int main(int argc, char *argv[]) {

printf("int 存储大小 : %d \n", a);

return 0;

}

二.局部变量

局部变量出现在一个作用域内,它们是局限于一个函数的。局部变量经常被称为自动变量,因为它们在进入作用域时,自动生成,离开作用域时自动消失。关键字auto可以显示的说明这个问题,但局部变量默认为auto,所以没必要声明为auto。通常函数里定义的变量,函数的参数都局部变量。所以一般需要在某个函数里,返回数组的地址或者指针之类,这时候必须定义成static,或者动态申请内存,这样函数结束返回时才不会释放掉那块内存空间。

寄存器变量也是一种局部变量。register来修饰,就是告诉编译器尽可能快的访问这个变量,通过存放在寄存器中来实现快速访问。

三.静态变量

静态变量的修饰关键字是static,static可以作用于变量以及函数。由static修饰的,可分为静态局部变量,静态全局变量,静态函数。静态变量的生命期和程序生命期是一样的,在程序结束之后操作系统会回收空间。静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量。例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由static加以定义后才能成为静态外部变量,或称静态全局变量

1.静态局部变量

在局部变量前面加上static后,就定义了静态局部变量,静态局部变量属于静态存储方式,静态局部变量只会被初始化一次,下次使用依据上一次保存的值。它具有以下特点:

(1) 静态局部变量在函数内定义,它的生存期为整个源程序,但是其作用域仍与自动变量相同,只能在定义该变量的函数内使用该变量。退出该函数后,尽管该变量还继续存在,但不能使用它。(作用域不变,生存周期变了)

(2) 允许对构造类静态局部量赋初值,例如数组,若未赋以初值,则由系统自动赋以0值。(而非静态局部变量未赋初始值,系统会给个随机值)

(3) 对基本类型的静态局部变量,若在说明时未赋以初值,则系统自动赋予0值。而对自动变量没有赋初值,则其值是随机值。

静态局部变量是一种生存期为整个源程序的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用,而且保存了上次被调用后留下的值。因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。

2.静态全局变量

全局变量(外部变量)的说明之前再加static就构成了静态全局变量。static全局变量只初使化一次,防止在其他文件单元中被引用。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。

四.常量

常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。

常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量。

常量就像是常规的变量,只不过常量的值在定义后不能进行修改。

定义常量

在 C 中,有两种简单的定义常量的方式:

使用#define预处理器。

使用const关键字。

#define 例子:

#include #define LENGTH 10

#define WIDTH 5

#define NEWLINE '\n'

int main()

{

int area;

area = LENGTH * WIDTH;

printf("value of area : %d", area);

printf("%c", NEWLINE);

return 0;

}

const 例子:

#include int main()

{

const int LENGTH = 10;

const int WIDTH = 5;

const char NEWLINE = '\n';

int area;

area = LENGTH * WIDTH;

printf("value of area : %d", area);

printf("%c", NEWLINE);

return 0;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。