b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

C语言中的静态关键字是什么?

电脑杂谈  发布时间:2020-03-22 22:10:49  来源:网络整理

c语言static函数声明_c语言static函数_c   类 static 函数

静态变量是在全局数据区域中分配的内存,包括稍后将提到的静态局部变量. 对于完整的程序,在内存中的分配如下:

代码区

全局数据区域

堆区

堆栈区域

由通用程序中的new生成的动态数据存储在堆区域中,而函数内部的自动变量存储在堆栈区域中. 自动变量通常在函数退出时释放空间,并且静态数据(甚至函数内部的静态局部变量)也存储在全局数据区域中. 全局数据区域中的数据不会释放空间,因为该函数将退出. 细心的读者可能会发现示例1中的代码将会

static int n; //定义静态全局变量

更改

int n; //定义全局变量

程序正常运行.

的确c 类 static 函数,定义全局变量可以共享文件中的变量,但是定义静态全局变量也具有以下好处:

静态全局变量不能被其他文件使用;

c   类 static 函数_c语言static函数_c语言static函数声明

具有相同名称的变量可以在其他文件中定义而没有冲突;

您可以将上面的示例代码更改为以下内容:

//示例2 // File1

#include

void fn();

static int n; //定义静态全局变量

void main()

{n = 20;

cout << n << endl;

fn();

}

// File2

c   类 static 函数_c语言static函数声明_c语言static函数

#include

extern int n;

void fn()

{n ++;

cout << n << endl;

}

编译并运行示例2,您会发现上面的代码可以单独编译,但是运行时会出错. 尝试

static int n; //定义静态全局变量

更改

int n; //定义全局变量

再次编译并运行程序,并仔细了解全局变量和静态全局变量之间的区别.

2. 静态局部变量

c   类 static 函数_c语言static函数_c语言static函数声明

在局部变量之前,添加关键字static,然后将该变量定义为静态局部变量.

我们首先给出一个静态局部变量的示例,如下所示:

//示例3

#include

void fn();

void main()

{fn();

fn();

fn();

}

void fn()

{static int n = 10;

c   类 static 函数_c语言static函数声明_c语言static函数

cout << n << endl;

n ++;

}

通常,在函数体中定义一个变量,并且只要程序运行到该语句,它将为该局部变量分配堆栈内存. 但是,当程序退出函数主体时,系统将回收堆栈内存,并且局部变量将因此无效.

但是有时我们需要在两个调用之间保存变量的值. 通常的想法是定义一个全局变量来实现这一目标. 但是通过这种方式,变量不再属于函数本身,不再由函数单独控制,这给程序的维护带来了不便.

静态局部变量可以解决此问题. 静态局部变量存储在全局数据区域中,而不是存储在堆栈中,并且每个值都保留到下一次调用,直到下次分配新值为止.

静态局部变量具有以下特征:

此变量在全局数据区域中分配内存;

当程序执行到对象的声明时,静态局部变量第一次被初始化,也就是说,后续的函数调用不再被初始化;

静态局部变量通常在声明中初始化. 如果未显式初始化它们,则程序将自动将它们初始化为0;

它始终驻留在全局数据区域中,直到程序执行结束. 但是它的范围是局部范围c 类 static 函数,并且它的范围在定义它的函数或语句块结束时结束;

3. 静态函数

在函数的返回类型之前添加static关键字,并且该函数被定义为静态函数. 静态函数不同于普通函数. 它仅在声明它的文件中可见,而不能被其他文件使用.

静态函数的示例:

//示例4

#include


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-148786-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...