zoukankan      html  css  js  c++  java
  • C中Static的作用

    在C中定义一个变量将意味什么?

    1、规定变量的取值范围。
    2、规定变量的操作
    3、规定变量的作用域(或者生命周期、或者访问控制)
    4、规定了变量的存储方式(或者存储格式)。

    在纯C中Static有两个作用(不考虑C++以及二则混合使用):

    1、Static修饰局部变量:该变量能在所定义的函数中共享(参考例一)。

    2、Static修饰全局变量或函数:该变量或函数只在所定义的文件中可见(参考例一)。

    例一:

    void foo(void)
    {
    static int i = 10; int j = 10; i += 1; j += 1; printf("i = [%d], j = [%d] ",i,j); } int main(int argc, char *argv[]) { int i ; for (i = 0; i < 10; i++) foo(); return 0; }

    output:

    i = [11], j = [11]
    i = [12], j = [11]
    i = [13], j = [11]
    i = [14], j = [11]
    i = [15], j = [11]
    i = [16], j = [11]
    i = [17], j = [11]
    i = [18], j = [11]
    i = [19], j = [11]
    i = [20], j = [11]

    例二:

    foo.c
    
    void foo1(void)
    {
        static int i = 10;
               int j = 10;
               
        i += 1; 
        j += 1; 
        printf("i = [%d], j = [%d]
    ",i,j);
    }
    
    static void foo2(void)
    {
        static int i = 10;
               int j = 10;
               
        i += 1; 
        j += 1; 
        printf("i = [%d], j = [%d]
    ",i,j);
    }
     main.c

    int
    main(int argc, char *argv[]) { int i,j; for (i = 0; i < 10; i++) foo1(); for(j = 0; j < 10; j++) foo2(); // error: undefined reference to `foo2' // as main() can not acces the static mothed foo2() in foo.c file return 0; }
  • 相关阅读:
    如何利用WGET覆写已存在的档案
    linux 脚本返回值
    ubuntu的配置网络
    非交互模式修改Ubuntu密码的命令
    [zz]python多进程编程
    [zz]linux修改密码出现Authentication token manipulation error的解决办法
    [zz]4.1.5 进程的处理器亲和性和vCPU的绑定
    vcpu
    非交互式调用交互式程序
    HDOJ_ACM_饭卡
  • 原文地址:https://www.cnblogs.com/freecodeX/p/4352051.html
Copyright © 2011-2022 走看看