1)全局变量是不显式用static修饰的全局变量,全局变量默认是有外部链接性的,作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,通过extern 全局变量名的声明,就可以使用全局变量。 2)全局静态变量是显式用static修饰的全局变量,作用域是声明此变量所在的文件,其他的文件即使用extern声明也不能使用。 2.3...
1)全局变量是不显式用 static 修饰的全局变量,全局变量默认是有外部链接性的,作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,通过 extern 全局变量名的声明,就可以使用全局变量。 2)全局静态变量是显式用 static 修饰的全局变量,作用域是声明此变量所在的文件,其他的文件即使用 extern 声明也不能...
函数中静态变量aa 只初始化一次,每次访问的值应该是上一次调用到该函数时最后处理的结果, 三、static 函数 1. 概念: 在函数的返回类型前加上关键字static,函数就被定义成为静态函数。 函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。 static函数(也叫内部函数...
在C 语言中,static 的字面意思很容易把我们导入歧途,其实它的作用有三条。 (1)先来介绍它的第一条也是最重要的一条:隐藏。 当我们同时编译多个文件时,所有未加 static 前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是 a.c,另一个是 main.c。 下面是...
总结:局部变量被static修饰后,将存储在静态区,出作用域后将不会被销毁,而是保留在静态区,生命周期改变(本质上改变了存储类型),这时它的生命周期就是程序的声明周期。 (2).static修饰全局变量 还是通过两段代码来解释: 代码语言:javascript 代码运行次数:0 ...
staticvoidinit()//只在a文件中用 { } voidcallme()//在工程中用 { staticintsum; } 上面的全局i变量和init()函数只能用在a.c文件中,全局变量sum的作用域只在callme里。变量j和函数callme()的全局限扩充到整个工程文件。所以可以在下面的b.c中用extern关键字调用。extern告诉编译器这个变量或者函数在其他...
当变量i被static修饰之后,跳出Fun函数后,变量i的值不会销毁,因此每一次执行都会保留i的值。 修饰局部变量后这个变量在底层做出了什么改变? 显而易见的是,局部变量的生命周期变得更长了,这是怎么实现的呢? 其实 在学习C/C++代码的时候,我们通常会把内存的区域划分成三个。 局部变量存放在栈区 当局部变量被修饰...
static关键字在C语言中有着独特的地位,堪称“记忆大师”。🏆 🔍 静态变量的记忆功能: 普通变量:用完即忘,像课堂上的小憩 static变量:过目不忘,值永远铭记在心 例如: static int count = 0; 每次调用都记得上次的结果,真是神奇! 📝 简单的理解方式: 普通变量:写字板,用完就擦 static变量:笔记本,翻开还在...
静态函数:函数体是始终存在的,但是这里加了一个 static 什么意思,肯定不是让它始终存在,而是限制它的作用域。我们知道一个函数是可以被其他文件的函数调用的,但是现在加了这静态属性就不行了,这个函数只能被这个文件的函数调用,其他文件的函数是无法调用的,也正因为如此,所以其他文件也可以使用相同的函数名而不怕重...
static关键字在C语言中应用广泛,特别是在权限管理方面。它主要有三种用法,下面我们来详细讲解。📌 static修饰局部变量 当static修饰局部变量时,变量的作用域范围不会改变,但存储位置会被改动。这样,变量的生命周期会变得和全局变量一样长。例如,在一个函数内部定义的静态局部变量,它的值会在程序执行期间一直存在,直到...