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

C / C ++中静态关键字的详细说明

电脑杂谈  发布时间:2020-04-09 09:35:17  来源:网络整理

c语言的static函数_c语言函数static_c   类 static 函数

1)将该变量放置在程序的全局存储区中,以便在下一次调用时可以保留原始分配. 这就是堆栈变量和堆变量之间的区别.

2)变量使用静态变量通知编译器它们仅在变量范围内可见. 这是它和全局变量之间的区别.

A. 如果仅在单个C文件中访问全局变量,则可以将此变量修改为静态全局变量,以减少模块之间的耦合;

B. 如果仅通过单个函数访问全局变量,则可以将此变量更改为函数的静态局部变量,以减少模块之间的耦合;

C. 在设计和使用访问动态全局变量,静态全局变量和静态局部变量的函数时,需要考虑重入问题;

D. 如果需要可重入函数,则必须避免在函数中使用静态变量(这样的函数称为: 具有“内部存储器”功能的函数);

E. 该函数中必须使用静态变量: 例如,当函数的返回值是指针类型时,本地变量的地址必须作为返回值是静态的,如果它是自动类型,则它将返回错误的指针;

在函数之前添加static,以使函数成为静态函数. 但是这里的“静态”的含义不是指存储方法,而是指函数的作用域仅限于此文件(因此也称为内部函数). 使用内部函数的优点是,当不同的人编写不同的函数时,他们不必担心他们定义的函数是否与其他文件中的函数具有相同的名称.

扩展分析:

c语言函数static_c   类 static 函数_c语言的static函数

静态一词有不寻常的历史. 最初,在C中引入了关键字static,以指示退出块后仍然存在的局部变量. 随后,static在C: 中具有第二个含义: 用于表示全局变量和其他文件无法访问的函数. 为了避免引入新的关键字,仍然使用static关键字来表达第二个含义. 最后,C ++重用了该关键字,并赋予了它与上一个关键字不同的第三个含义: 表示属于类而不是此类的任何特定对象的变量和函数(与Java中的关键字相同).

全局变量,静态全局变量,静态局部变量和局部变量之间的区别

变量可以分为: 全局变量,静态全局变量,静态局部变量和局部变量.

(1)根据存储区域,将全局变量,静态全局变量和静态局部变量存储在内存的静态存储区域中,并将局部变量存储在内存的堆栈区域中;

(2)根据范围,全局变量在整个项目文件中有效;静态全局变量仅在定义它的文件中有效;静态局部变量仅在定义它的函数中有效,但是程序仅分配一次. 在内存中,函数返回后变量不会消失;本地变量在定义它的函数中有效,但在函数返回后它将变为无效.

在描述全局变量(是整个源程序. 当源程序由多个源文件组成时,非静态全局变量在每个源文件中均有效. 静态全局变量限制了它的范围,也就是说,它仅在定义该变量的源文件中有效,并且不能在同一源程序的其他源文件中使用. 由于静态全局变量的范围仅限于一个源文件,并且只能由源文件中的功能共享,因此可以避免在其他源文件中引起错误.

从以上分析可以看出,将局部变量更改为静态变量会更改其存储方法,从而更改其寿命. 将全局变量更改为静态变量后,它会更改其范围并限制其使用范围.

1>静态函数的范围不同于普通函数. 仅在本文档中. 仅在当前源文件中使用的功能应描述为内部功能(静态),而内部功能应在当前源文件中进行描述和定义. 对于可以在当前源文件之外使用的功能,应在头文件中声明. 使用这些功能的源文件应包含此头文件;

2>静态全局变量和普通全局变量之间有什么区别: 静态全局变量仅初始化一次,以防止在其他文件单元中被引用;

c语言的static函数_c语言函数static_c   类 static 函数

3>静态局部变量和普通局部变量有什么区别: 静态局部变量仅初始化一次,下一次基于上一个结果值;

4>静态函数和普通函数之间的区别是什么: 静态函数在内存中只有一个副本,而普通函数在每个调用中都维护一个副本.

5>如果未手动初始化全局变量和静态变量,则编译器会将它们初始化为0. 本地变量的值未知.

5,C ++静态

C ++静态有两种用法: 用于过程编程的静态和用于面向对象编程的静态. 前者适用于普通变量和函数,不涉及类;后者主要说明了static在类中的作用.

1)流程设计中的静态

在全局变量之前,添加static关键字,然后将该变量定义为静态全局变量. 让我举一个静态全局变量的示例,如下所示.

20

21

c语言的static函数_c   类 static 函数_c语言函数static

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

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

2>未初始化的静态全局变量将由程序自动初始化为0;

3>静态全局变量在声明它的整个文件中可见c 类 static 函数,但在文件外部不可见;

静态变量分配在全局数据区域中,包括后面将提到的静态局部变量. 对于完整的程序c 类 static 函数,在内存中的分布如下所示.

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

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

更改为:

c语言函数static_c语言的static函数_c   类 static 函数

int n; //定义全局变量

程序仍然可以运行. 实际上,通过定义全局变量,您可以在文件中共享变量. 但是定义静态全局变量也有以下好处:

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

2>其他文件可以定义相同名称的变量而不会发生冲突;

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

更改为:

int n; //定义全局变量

再次编译并运行程序,并欣赏全局变量和静态全局变量之间的区别.

2)静态局部变量

在局部变量前面添加关键字static,该变量定义为静态局部变量. 静态局部变量的示例如下所示.

静态局部变量可以解决此问题. 静态局部变量存储在全局数据区域中,而不是堆栈中,并且该值将保留到下一次.


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

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

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