【建站服务】高端!网站定制/设计/优化/二次开发/制作/搭建-石河子高端网站建设-域名申请
作者: 风兰 . 阅读量: 5 . 发表时间:2022-09-21 05:42:26
上往建站提供服务器空间服务商,百度快照排名,网站托管,百度推广运营,致力于设计外包服务与源代码定制开发,360推广,搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。
高端!网站定制/设计/优化/二次开发/制作/搭建-石河子高端网站建设

那么在file2.c是无法访问到变量a的。原因在于用static对全局变量进行修饰改变了其作用域的范围,由原来的整个工程可见变为本源文件可见。
(3)修饰函数
用static修饰函数的话,情况与修饰全局变量大同小异,就是改变了函数的作用域。
更多参考内容:C 语言中 static 的作用
FK
FK
421***224@qq.com
参考地址
5年前 (2018-01-29)
学以解忧
145***3462@qq.com
22
static 的用法
用来说明静态变量 ,如果是在函数的,那么其效果和全局变量类似 。但是,static定义的变量只能在当前 c 程序文件中使用,在另一个 c 代码里面 , 即使使用 extern 关键词也不能访问这个static变量。如果实在函数内部定义的,那么这个变量只初始化一次,即使再次调用这个函数,这个static变量也不会再次初始化 , 这个变量的取值就会一直保存着,也就是说,当你再次调用这个函数的时候,里面用到这个static变量时,就会发现,它还是上一次函数调用时的结果。
实例 static.c:
#include <stdio.h>
void varfunc(void)
{
int var=0;
static int static_var=0;
printf("var equal: %d ",var);
printf("static_var equal: %d ",static_var);
printf("");
var++;
static_var++;
}
int main(int argc, char *argv[])
{
int i;
for(i=0;i<3;i++)
varfunc();
return 0;
}
运行结果如下:
var equal: 0
static_var equal: 0
var equal: 0
static_var equal: 1
var equal: 0
static_var equal: 2
由此可见,用static修饰的局部变量只初始化一次。
学以解忧
学以解忧
145***3462@qq.com
5年前 (2018-02-22)
small_orange
731***247@qq.com
参考地址
19
静态全局变量与普通全局变量的区别:
全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。
全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式,这两者在存储方式上并无不同。
这两者的区别在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。
small_orange
small_orange
731***247@qq.com
参考地址
2年前 (2020-05-23)
高端!网站定制/设计/优化/二次开发/制作/搭建-石河子高端网站建设
上往建站提供搭建网站,域名注册,官网备案服务,网店详情页设计,企业网店,专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管,网页美工排版,致力于域名申请,竞价托管,软文推广,全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机,网站推广,百度竞价托管,网站建设,上网建站推广服务,网络公司有哪些等业务,专业团队服务,效果好。
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)
关键词:网站建设,企业网站,网站制作,网页设计,高端网站建设,企业网站制作,网页制作,制作网站,网站设计,高端网页设计,高端网站设计,做网站,自适应网站



printf("寄存器变量用时: %ld 秒 ", stop - start); time(&start); for (x = 0; x < y; x++); time(&stop); printf("一般变量用时: %ld 秒 ", stop - start); time(&start); for (m = 0; m < n; m++); time(&stop); printf("全局变量用时: %ld 秒 ", stop - start); return 0;}输出结果:
小军
198***0646@qq.com
参考地址
FK
421***224@qq.com
参考地址
在 C 语言中,static 可以用来修饰局部变量,全局变量以及函数。在不同的情况下 static 的作用不尽相同。
(1)修饰局部变量
一般情况下,对于局部变量是存放在栈区的,并且局部变量的生命周期在该语句块执行结束时便结束了。但是如果用static进行修饰的话,该变量便存放在静态数据区,其生命周期一直持续到整个程序执行结束。但是在这里要注意的是,虽然用static对局部变量进行修饰过后,其生命周期以及存储空间发生了变化,但是其作用域并没有改变,其仍然是一个局部变量,作用域仅限于该语句块。
在用static修饰局部变量后,该变量只在初次运行时进行初始化工作,且只进行一次。
如:
#include<stdio.h> void fun() { static int a=1; a++; printf("%d ",a); } int main(void) { fun(); fun(); return 0; }程序执行结果为: 2 3
说明在第二次调用fun()函数时,a的值为2,并且没有进行初始化赋值,直接进行自增运算,所以得到的结果为3.
对于静态局部变量如果没有进行初始化的话,对于整形变量系统会自动对其赋值为0,对于字符数组,会自动赋值为''.
(2)修饰全局变量
对于一个全局变量,它既可以在本源文件中被访问到,也可以在同一个工程的其它源文件中被访问(只需用extern进行声明即可)。
如:
//有file1.c int a=1; file2.c #include<stdio.h> extern int a; int main(void) { printf("%d",a); return 0; }则执行结果为 1
但是如果在 file1.c 中把 int a=1 改为 static int a=1;
那么在file2.c是无法访问到变量a的。原因在于用static对全局变量进行修饰改变了其作用域的范围,由原来的整个工程可见变为本源文件可见。
(3)修饰函数
用static修饰函数的话,情况与修饰全局变量大同小异,就是改变了函数的作用域。
FK
421***224@qq.com
参考地址
学以解忧
145***3462@qq.com
static 的用法
用来说明静态变量 ,如果是在函数的,那么其效果和全局变量类似 。但是,static定义的变量只能在当前 c 程序文件中使用,在另一个 c 代码里面 , 即使使用 extern 关键词也不能访问这个static变量。如果实在函数内部定义的,那么这个变量只初始化一次,即使再次调用这个函数,这个static变量也不会再次初始化 , 这个变量的取值就会一直保存着,也就是说,当你再次调用这个函数的时候,里面用到这个static变量时,就会发现,它还是上一次函数调用时的结果。
实例 static.c: