zoukankan      html  css  js  c++  java
  • static和extern的区别

    extern只是声明,不是定义。

    static却是是定义

    #include <stdio.h>

    int a=3;

    int b=4;//非晶态全局变量,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同              //一源程序的其它源文件中不能使用它

    static int d=5;//静态全局变量
    extern int c;//提示编译器c在别的文件中定义,这里先拿来用
    int main(void){
    printf("a is %p ",&a);//这个a是全局变量a
    static int a;//重新定义了a
    printf("static a is %p ",&a);//地址发生了变化
    printf("b is %p ",&b);
    extern int b;//这个b还是全局变量b,不过没这样用extern的,这里只是测试一下,说明没有语法错误
    printf("extern b is %p ",&b);//地址没变

    printf("c is %d ",c);//能通过编译,但是如果在链接的时候,别的文件中没找到c的定义,则报错
    }

  • 相关阅读:
    MyBatis入门
    Java JDBC
    Spring MVC
    Java内存模型
    Java日志
    Java I/O模型
    Java异常处理
    Java泛型设计
    Java反射
    Java代理
  • 原文地址:https://www.cnblogs.com/saolv/p/7761021.html
Copyright © 2011-2022 走看看