,,C语言中static的作用及C语言中使用静态函数有何好处

,,C语言中static的作用及C语言中使用静态函数有何好处

在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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: