zoukankan      html  css  js  c++  java
  • static和extern

    static作用

      static的作用主要体现在两个方面:

    • 作用域
    • 生存期

    静态局部变量

       作用域:函数内部。

      生存期:整个程序运行期间。

    1 void fun()
    2 {
    3       static int i = 1;    
    4 }

    静态全局变量

      作用域:本文件内部。

      生存期:整个程序运行期间。

    static int n = 5;
    
    int main ()
    {
        return 0;
    }

    类静态数据成员

      类静态数据成员一个类只有一份实例,可以通过对象和类来使用。

    class Test{
    public:
        //静态数据成员
        static int a;
    };
    //初始化
    int Test::a = 1;
    
    int main()
    {
        Test t;
        // 通诺对象使用
        t.a = 2;
        // 通过类使用
        Test::a += 1;
    
    }

    静态函数

      作用域:本文件内部。

      生存期:整个程序运行期间。

    static void f() 
    {
    
    }
    
    int main ()
    {
        
    }

    类静态成员函数

      静态成员函数也是属于类的,它并不属于任何对象,可以通过类使用,也可以通过对象使用,它是不能访问非静态数据成员的,在c++中静态成员函数主要用来访问静态数据成员。

    • 静态成员函数不能调用非静态成员函数,但是反过来是可以的
    • 静态成员函数没有this指针,也就是说静态成员函数不能使用修饰符(也就是函数后面的const关键字)
    • 静态成员函数的地址可用普通函数指针储存,而普通成员函数地址需要用 类成员函数指针来储存。

    C程序内存布局

      参考:https://www.cnblogs.com/418ks/p/10802184.html

    extern的作用

      利用关键字extern,可以在一个文件中引用另一个文件中定义的变量或者函数。

    在同一个文件

      使用了extern修饰函数和变量,就不需要在使用之前对函数和变量有声明。

     1 #include<stdio.h>
     2  
     3 int func();
     4  
     5 int main()
     6 {
     7     func(); //前面有声明可以
     8     printf("%d",num); //后面的全局变量有extern可以
     9     return 0;
    10 }
    11  
    12 extern int num = 3;
    13  
    14 int func()
    15 {
    16     printf("%d
    ",num);
    17 }

    在不同文件

      这可以在文件2中使用文件1中的变量和函数。

     1 //文件1
     2  
     3 extern int num = 3;
     4  
     5 extern int func()
     6 {
     7     
     8 }
     9  
    10 //文件2
    11 #include <stdio.h>
    12 int main()
    13 {
    14     func(); 
    15     printf("%d",num); 
    16     return 0;
    17 }
    18  
  • 相关阅读:
    oracle trunc()函数的用法——日期、数字
    ORACLE定时任务时间间隔设置
    Oracle JOB 间隔时间详解
    "规格"与"数量"的英文缩写是什么
    “金额”“合计”用英语怎么说?有什么区别么?
    关于狼性的团队励志名言警句
    5篇关于职场技巧的励志文章
    菜单权限分配源码奉送V2.0
    安装 SQL Server 客户端驱动程序
    一步步开发自己的博客 .NET版(9、从model first替换成code first 问题记录)
  • 原文地址:https://www.cnblogs.com/chen-cs/p/13198800.html
Copyright © 2011-2022 走看看