在c语言中static关键字的作用,c++中的static关键字

  在c语言中static关键字的作用,c++中的static关键字

  c有很多关键词,大部分用起来很清楚,但也有一些相对复杂。我们这里要解释的static关键字就是这种情况。它的功能非常强大,相应的使用也比较复杂。

  一般来说,static关键字的常用方式有三种:一种是用作局部变量的修饰符;二是用作全局变量修饰符;三用作功能修饰语。在本文下面的描述中,我们将详细分析这三种用法。

  1,用于局部变量的修改。

  使用static修改局部变量时,通常在函数体中,只能在函数内部调用。但是,这样定义的变量通常被称为局部静态变量,其值不会在函数调用结束时被清除。相反,当再次调用该函数时,其值将是上次调用后的值。

  例如,我们定义以下两个变量var1和var2:

  无效函数(void)

  {

  int var1

  静态int var2

  }在上面的例子中,变量var1是局部变量,变量var2是静态局部变量。因此,函数被调用后,变量var1的值将被清除,而变量var2的值将被保留。如果我们多次调用该函数,变量var1每次都会重新初始化,但变量var2的值不会。这个功能的作用是什么?我们可以用它来实现计数之类的累加运算。

  最后,让我们总结一下静态局部变量的特点:

  存放位置:在静态存放区。当使用static修改局部变量时,它改变了局部变量的存储位置,从原来的堆栈存储变为静态存储区。初始化:未初始化的局部静态变量会被程序自动初始化为automatic对象的值是任意的,除非为了初始化而显示)。作用域:作用域仍然是局部作用域,当定义它的函数或语句块结束时,作用域也就结束了。但是,在离开作用域之后,静态局部变量并没有被销毁,而是仍然驻留在内存中,直到程序结束,只是我们不能再访问它了。需要注意的是,静态局部变量的值在函数被调用后不会被破坏,所以不能重新进入带有静态局部变量的函数。因此,最好谨慎使用静态局部变量。

  2.它用于修饰全局变量。

  关键字static也可以用来修改全局变量,全局变量是模块中的变量,但不属于任何函数。这样的变量通常被称为静态全局变量。模块中的所有函数都可以访问这样的变量,但其他模块中的函数不能。

  那么定义这样一个静态局部变量有什么用呢?我们认为最明显的优势主要有两点:

  它是一个模块中的变量,防止被其他模块访问和修改,因为有时候我们不希望它被别人访问。另一方面,由于有效区域的限制,同名的变量可以在其他模块中使用而不冲突,使得软件编写更加方便。最后,我们还想总结一下静态全局变量的特点,尤其是它们的作用域,可以和静态局部变量相比较:

  存储位置:内存中类似静态局部变量的静态存储区域,在整个程序运行过程中,静态存储区域始终存在。初始化:未初始化的局部静态变量会被程序自动初始化为0,而automatic object的值是任意的,除非显示为已初始化。作用域:一个静态全局变量在声明它的模块之外是不可见的,所以它的作用域是在它的模块中,更具体地说,是从定义到模块的末尾。所以当我们用static来修饰一个全局变量的时候,它把全局变量的作用域限制在声明它的模块,但是不改变它的存储位置,它还是在静态存储区。

  3.用于功能装饰。

  关键字static也可以用来修饰一个函数,我们称之为静态函数。在模块内,声明为static的函数只能被模块内的其他函数调用,也就是说,这个函数的应用范围仅限于声明它的模块。

  定义一个静态函数就是在函数的返回类型前添加static关键字。一般函数的定义和声明默认为extern,但是静态函数只在声明它们的模块中可见,不能被其他模块调用。如下定义静态函数:

  静态无效函数(void)

  {

  //函数体

  }那么定义静态函数有什么好处呢?与静态全局变量一样,我们认为最明显的优势主要有两点:

  有一点是静态函数是局部函数,不能被其他模块的函数调用,所以封装模块的一些内部属性的函数比较方便。另一方面,由于有效区域的限制,同名的函数可以在其他模块中使用,不会发生冲突,使得软件编写更加方便。4.摘要

  这里讨论的是static关键字,它最大的优点是可以封装数据和操作,实际上限制了数据和函数的范围。可能有人会问,限制行动范围有什么用?

  首先,它可以将所需的属性和操作信息传递给用户,并限定数据和操作的范围。

  其次,它隐藏了一些不必要的需要向公众公开的信息,使来电者更加清楚其特征,使通话更加安全。

  此外,模块的封装更好,结构更紧凑和优化。

  事实上,在面向对象的语言中,也是基于这种思想来封装对象的属性和操作,并注意私有和公共的属性和操作,但它更完整。

  欢迎关注:

  

郑重声明:本文由网友发布,不代表盛行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算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: