在C语言中,static有三个作用:一是隐藏函数,二是保留持久性函数,三是默认初始化为0。本文重点介绍了C语言中静态函数的作用以及在C语言中使用静态函数的优势。让我们看看对这篇文章感兴趣的人。
关于Java中static关键字的功能和用法的详细介绍,请点击此处了解详情。
在C语言中,static的字面意思很容易让我们误入歧途。事实上,它有三个功能,即:
第一,隐藏函数,用于静态修饰函数和全局变量。
第二种是保持持久化功能,对于局部变量进行静态修改。
第三,存储在静态区的变量,全局和局部静态修饰,默认初始化为0。
让我为你一一介绍:
(1)先介绍它的第一个也是最重要的一个:隐藏。
当我们同时编译多个文件时,所有不带静态前缀的全局变量和函数都具有全局可见性。要理解这句话,我举个例子。我们要同时编译两个源文件,一个是a.c,一个是main.c
以下是A.C .的内容。
char a=' A//全局变量
void消息()
{
printf(' Hello \ n ');
}
以下是main.c的内容
int main(void)
{
外部字符a;//外部变量必须在使用前声明
printf('%c ',a);
(void)msg();
返回0;
}
程序的运行结果是:
你好
你可能会问:为什么在a.c中定义的全局变量A和函数msg可以在main.c中使用?如前所述,所有不带静态前缀的全局变量和函数都具有全局可见性,其他源文件也可以访问。在这个例子中,a是一个全局变量,msg是一个函数,它们都没有static前缀,所以它对另一个源文件main.c是可见的
如果添加了static,它将对其他源文件隐藏。比如在a和msg的定义前加上static,main.c就看不到了。这个特性可以用来在不同的文件中定义同名的函数和变量,而不用担心命名冲突。Static可以用作函数和变量的前缀。对于函数,静态只能隐藏,而对于变量,静态有以下两个作用。
(2)static的第二个功能是保持变量的内容持久。程序一开始运行,存储在静态数据区的变量就会被初始化,这是唯一的初始化。静态存储区存储的变量有两种:全局变量和静态变量,但与全局变量相比,静态可以控制变量的可见范围。说到底,静电还是用来隐藏的。虽然这种用法并不常见,但我还是举个例子吧。
#包含stdio.h
int fun(void){
静态int count=10//事实上,这个赋值语句从来没有被执行过
返回计数-;
}
int count=1;
int main(void)
{
printf(' global \ t \ t local static \ n ');
for(;计数=10;计数)
printf('%d\t\t%d\n ',count,fun());
返回0;
}
程序的运行结果是:
全局局部静态
1 10
2 9
3 8
4 7
5 6
6 5
7 4
8 3
9 2
10 1
(3)3)static的第三个功能是默认初始化为0。其实全局变量也有这个属性,因为全局变量也存储在静态数据区。在静态数据区,内存中所有字节的默认值都是0x00,在某些情况下可以减少程序员的工作量。比如初始化一个稀疏矩阵,我们可以把所有元素逐个设置为0,然后给几个不为0的元素赋值。如果定义为静态,则省略最初设置0的操作。比如你想用一个字符数组做字符串,你觉得每次都要在字符数组末尾加' \0 '太麻烦了。如果字符串被定义为static,这个麻烦就省了,因为它在那里是' \0 '。我们来做个小实验验证一下。
#包含stdio.h
int a;
int main(void)
{
int I;
静态字符串[10];
printf('整数:% d;string: (begin)%s(end)',a,str);
返回0;
}
程序运行结果如下
整数:0;字符串:(begin)(end)
最后,对static的三大功能做一个总结。首先,静态的主要功能是隐藏。其次,因为静态变量存储在静态存储区,所以具有持久性,默认值为0。
以上是关于C语言中静态的作用。
我来介绍一下在C语言中使用静态函数的好处。
在C语言中使用静态函数的好处:
静态函数会自动分配到一个一直在用的存储区,直到应用实例退出,这样就避免了调用函数时推栈和出栈,速度快很多。
关键字“static”翻译成中文就是“静态”的意思,所以内部函数也叫静态函数。但是,这里的“静态”的意思并不是指存储模式,而是函数的范围只限于本文档。使用内部函数的好处是,当不同的人编写不同的函数时,不用担心自己定义的函数是否会和其他文件中的函数同名,因为同名并不重要。
C语言中静态的语义1 .静态变量:1)。局部a .静态局部变量是在函数中定义的,它的生存期是整个源程序,但是它的作用域和自动变量的作用域是一样的,所以只能在定义该变量的函数中使用。退出该功能后,虽然变量仍然存在,但无法使用。b .如果静态局部变量的基本类型在描述中没有给初始值,系统会自动给0值。但是,如果没有给自动变量一个初始值,它的值是不确定的。2).全局全局变量本身就是静态存储方法,静态全局变量当然也是静态存储方法。但是它们的作用域,非静态全局变量的作用域是整个源程序(多个源文件可以一起用);但静态全局变量限制了它的作用域,即它只在定义该变量的源文件中有效,不能在同一源程序的其他源文件中使用。2 .静态函数(也叫内部函数)只能被这个文件中的函数调用,不能被同一个程序的其他文件中的函数调用。与一般的非静态函数(外部函数)不同,static在c中可以用来修改变量和函数,先看看它用来修改变量的时间。C中的变量可以分为全局数据区、堆栈和堆。其实我们通常所说的栈就是stack,但不包括right。不要混淆。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。