c语言static的使用
在C语言中,static 不仅可以用来修饰变量,还可以用来修饰函数,使用 static 修饰的变量, 称为静态变量。
一、static修饰局部变量——静态局部变量
结论:static 修饰局部变量改变了变量的生命周期,让静态局部变量出了作用 域依然存在,到程序结束,生命周期才结束。
static 本质上是改变了变量的存储类型,从栈区到了静态区。
(拓展:内存被划分为三个区域:
1.栈区:存放 局部变量、函数的参数等局部的、临时的变量
2.堆区:动态内存分配的
3.静态区:全局变量、static修饰的静态变量)
二、static修饰全局变量——静态全局变量
结论:一个全局变量被static修饰,使得这个全局变量只能在本源文件内使用,不能在其他源文件中使用。(同一个项目中的其他源文件内都不可使用)
全局变量,在其他源文件内部可以被使用,是因为全局变量具有外部链接属性,但是被static修饰之后,就变成了内部链接属性,其他源文件就不能链接到这个静态的全局变量了。
三、static修饰函数——静态函数
总结:一个函数被static修饰,使得这个函数只能在本源文件内使用,不能在其他源文件内使用。
本质:static是将函数的外部链接属性变成了内部链接属性,和static修饰全局变量一样。
C语言中函数定义时前面加static是什么意思
表示是静态函数 只能在本文件调用 不能在同工程中,其它C文件调用 使用static 可以避免不想被其它模块调用的函数调用 同时, 不同文件中的static函数可以重名 减少命名难度。
c语言中static说明是什么意思
static 用来说明静态变量。如果是在函数外面定义的,那么其效果和全局变量类似,但是,static定义的变量只能在当前c程序文件中使用,在另一个c代码里面,即使使用extern关键词也不能访问这个static变量。
扩展资料
c语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言具有高效、灵活、功能丰富、表达力强和较高的可移植性等特点,在程序设计中备受青睐。C语言编译器普遍存在于各种不同的操作系统中,例如Microsoft Windows、macOS、Linux、Unix等。C语言的设计影响了众多后来的编程语言,例如C++、Objective-C、Java、C#等。
static(中文名:静态)来自高级计算机语言,像在VB,C#,C,C++,Java,PHP,Objective-C,JavaScript中我们可以看到static作为关键字和函数出现,在其他的高级计算机语言如FORTRAN、ALGOL、COBOL、BASIC、LISP、SNOBOL、PL/1、Pascal、PROLOG、Ada等语言中也是有出现的,只是有着不同的作用,对于其具体作用,读者有需要的时候是可以具体查阅的。
问个问题,为什么我定义的static函数能被其他源文件调用
不能被调用,static有以文件为单位隐藏名字的功能,同一文件指的是.cpp文件以及它所include的.h文件,也就是说,你在一个头文件里定义了static的全局变量或者,被其他cpp文件包含了,被包含一次就相当于在不同的文件上定义了同名的static的变量或者函数,你所谓的可以调用的并不是你最初在那个文件上定义的static的变量或者函数了(你可以试下,不加static就会提示重定义不能通过编译了)