C语言教程
C语言控制语句
C语言函数
C语言数组
C语言指针
C语言字符串
C语言数学函数
C语言结构
C语言文件处理
C预处理器

C语言静态

Static是C编程语言中使用的关键字。它可以与变量和函数一起使用,即,我们也可以声明一个静态变量和静态函数。普通变量仅限于其定义的范围,而静态变量的范围遍及整个程序。

静态关键字可在以下情况下使用:

静态全局变量
当使用static关键字声明全局变量时,则称为静态全局变量。它在程序顶部声明,并且它的可见性遍及整个程序。
静态函数
用称为静态函数的静态关键字声明函数时。它的生命周期贯穿于整个程序。
静态局部变量
当使用static关键字声明局部变量时,则称为静态局部变量。静态局部变量的内存在整个程序中都是有效的,但是变量的可见范围与自动局部变量相同。但是,当函数在第一个函数调用期间修改静态局部变量时,则此修改后的值也可用于下一个函数调用。
静态成员变量
当在类中使用static关键字声明成员变量时,称为静态成员变量。类别的所有实例都可以访问它们,而不是特定的实例。
静态方法
用static关键字声明的类的成员函数称为static方法。类的所有实例都可以访问它,而不是特定的实例。
让我们通过一个例子来理解。
#include <stdio.h>
int main()
{
 printf("%d",func());
printf("\n%d",func());
 return 0;
}
int func()
{ 
    int count=0; // variable initialization
    count++; // incrementing counter variable
   return count; }
在上面的代码中,调用func()函数。在func()中,count变量得到更新。函数完成执行后,count变量的内存将被删除。如果我们不想从内存中删除计数,则需要将count变量用作静态变量。如果我们将变量声明为静态变量,则即使函数完成其执行,该变量也不会从内存中删除。
输出
1                                                                                                                               
1

静态变量

静态变量是在各种函数调用中保持其值不变的变量。
语法
静态变量的语法如下:
static data_type variable_name; 
让我们看一个简单的静态变量示例。
#include <stdio.h>
int main()
{
   printf("%d",func());
   printf("\n%d",func());
    return 0;
}
int func()
{
    static int count=0;
    count++;
    return count;
}
在上面的代码中,我们已将count变量声明为static。当调用func()时,count的值更新为1,在下一个函数调用期间,count变量的值变为2、因此,可以说静态变量的值在函数调用中持续存在。
输出
1                                                                                                                             
2        

静态函数

我们知道默认情况下非静态函数是全局函数,这意味着该函数也可以在文件外部访问,但是如果我们将该函数声明为静态,那么它会限制功能范围。静态功能只能在文件中访问。
静态功能如下:
static void func()
{
    printf("Hello lidihuo");
}

差异b/w静态和全局变量

全局变量是在函数外部声明的变量。这些全局变量存在于程序的开头,并且其作用域一直保留到程序结束。
静态变量仅限于定义它们的源文件,也就是说,其他源文件无法访问它们。
两者静态和全局变量具有静态初始化。在这里,静态初始化意味着如果我们不给变量分配任何值,那么默认情况下,会将0值分配给该变量。

差异b/w静态局部和静态全局变量

静态全局变量
如果在函数外使用静态关键字声明的变量,则称为静态全局变量。在整个程序中都可以访问它。
静态局部变量
在函数内部声明带有static关键字的变量称为静态局部变量。静态局部变量的范围将与自动局部变量的范围相同,但在整个程序执行过程中将使用其内存。当函数在一个函数调用期间修改静态局部变量的值时,即使在下一个函数调用期间它也将保持不变。

静态变量的属性

以下是静态变量的属性:
静态变量的内存在静态变量内分配。 它的内存在整个程序中都可用,但范围将与自动局部变量相同。其 值将在各种函数调用中保持不变。 如果我们不给变量赋任何值,则默认值为0。 无法在程序外部访问全局静态变量,而其他源文件可以访问全局变量。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4