精华内容
下载资源
问答
  • 局部变量和全局变量是从作用域...为什么很多地方就默认为内部变量和外部变量就是局部变量和全局变量 这样子的话那么这句话怎么理解呢?![图片说明](https://img-ask.csdn.net/upload/201603/07/1457318749_145328.png)
  • #pragma mark 内部全局变量和外部全局变量 ###pragma mark 概念 /** 默认情况下所有的全局变量都是 外部全局变量 只要给全局变量加上 static 关键字 就是内部全局变量 外:多个同名的外部全局变量 指向 同一块...

    #pragma mark 内部全局变量和外部全局变量 ###pragma mark 概念

    /**
     默认情况下所有的全局变量都是 外部全局变量
    只要给全局变量加上 static 关键字 就是内部全局变量
     
     外:多个同名的外部全局变量 指向 同一块存储空间
     内:多个同名的全局变量 如果不在同一个文件中,那么指向不同的存储空间
    
     只要用static修改的全局变量就是内部全局变量,只能在当前文件中使用
     
     extern:
     用于声明一个外部全局变量
     声明只需要在使用变量之前声明就可以了
     static:
     用于定义一个内部全局变量
     声明和定义的区别:
     声明不会开辟存储空间
     定义会开辟存储空间
     
     */
    

    ###pragma mark 代码 ####mian.c

    #include <stdio.h>
    #include "lyh.h"
    /*
     全局变量分为两种:
     1.外部全局变量,默认情况下所有的全局变量都是外部全局变量
        什么是外部全局变量? 可以被其他文件访问的全局变量 我们称之为 外部全局变量
     
     2. 内部全局变量, 只要给全局变量加上 static 关键字 就是内部全局变量
        什么是内部全局变量? 只能被当前文件访问的全局变量 我们称之为 内部全局变量
     
     外部全局变量 有一个特点:
        可以定义同名的外部全局变量
        多个同名的外部全局变量 指向 同一块存储空间
     
     内部全局变量 又一个特点:
        也可以定义多个同名的内部全局变量
        多个同名的全局变量 如果不在同一个文件中,那么指向不同的存储空间
     
     为了提高数据的安全性, 不让别人在其他文件中修改我们的全局变量,C语言提供了另外一个用于修改全局变量的关键字,static
     // 只要用static修改的全局变量就是内部全局变量,只能在当前文件中使用
     这样就可以提高我们全局变量的安全性
     
     如果多个文件中存在同名的 内部全局变量,相互不影响
     如果既有外部全局变量 也有内部全局变量, 那么会优先访问内部全局变量
     
     extern:
        用于声明一个外部全局变量
        声明只需要在使用变量之前声明就可以了
     static:
        用于定义一个内部全局变量
     声明和定义的区别:
        声明不会开辟存储空间
        定义会开辟存储空间
     */
    
    // 编译 出现 main.o
    // 说我在 mian.c 里面定义了一个num
    
    // int num; // 外部全局变量
    
    static int num; // 内部全局变量
    int main()
    {
        /*
         Undefined symbols for architecture x86_64:
         "_test", referenced from:
         _main in main.o
         ld: symbol(s) not found for architecture x86_64
         clang: error: linker command failed with exit code 1 (use -v to see invocation)
         
        找不到text函数
         
         */
        num = 998; 
        test();
        printf("main.c num = %i\n",num);
    
        return 0;
    }
    
    
    

    ####lyh.c

    #include "lyh.h"
    // duplicate symbol _num in: 说我重复定义了一个num
    
    /*
    // 编译 出现 lyh.o
    // 说我在1 mian.c 里面定义了一个num
    //int num;   // 由于Xcode6升级之后导致的,在Xcode6以前是可以的
     如果在lyh.c当中 定义外部全局变量 num, 那么我们说过 同名的外部全局变量 指向同一块存储空间,那么如果在多个文件中有同名的外部全局变量,可能导致a文件的数据被B文件不小心修改
     降低了数据的封装性,提高了错误的风险
    */
    // extern 关键字 用于修饰全局变量, 代表声明一个全局变量
    // 注意:声明全局变量 和 声明函数 一样 , 仅仅是告诉系统我们有这个全局变量, 但并不会真正的开辟存储空间
    //extern int num;    // 如果使用命令行输出 不会有问题 cc-c mian.c  cc - lyh.c 生成 .o文件 然后  cc mian.o lyh.o 生成a.out
    /**
     Undefined symbols for architecture x86_64:
     "_num", referenced from:
     _test in lyh.o
     
     extern 是声明一个变量, 而不是开辟一块存储空间
     */
    //int num;
    void test()
    {
    extern int num;
        printf("lyh.c num = %i\n",num);
        num = 666;
    }
    int num;
    

    转载于:https://my.oschina.net/u/3561184/blog/1204119

    展开全文
  • 1、外部变量 C++允许变量的跨文件调用,此时将跨文件调用的变量称为外部变量,调用外部变量需要使用extern关键字进行声明。下面的例子在xx.h文件中定义一个全局变量,然后在main.cpp文件中使用extern声明xx.h文件中...

    29e337172c0f8855d62b7bec7796cd7d.png

    1、外部变量

    C++允许变量的跨文件调用,此时将跨文件调用的变量称为外部变量,调用外部变量需要使用extern关键字进行声明。下面的例子在xx.h文件中定义一个全局变量,然后在main.cpp文件中使用extern声明xx.h文件中的全局变量:

    /// 1、xx.h文件中定义一个全局变量
    

    2、外部函数

    如果函数不是在类内声明的成员函数,那么它的作用域为命名空间,则此函数就可以在不同的文件中被调用,并可以称为调用外部函数。调用外部函数需要首先进行外部函数的原型声明,下面的例子显示了外部文件的调用方式:

    /// 在xx.cpp中定义一个函数
    

    3、匿名命名空间的变量和函数

    如果不希望变量和函数被外部的文件调用,那么可以将他们在匿名的命名空间中定义。不希望被外部调用主要有两个原因,第一是防止不同文件中“重名”变量的存在,第二是保证数据的安全性。下面的例子显示了匿名命名空间中定义函数的方式:

    namespace 
    展开全文
  • 【C语言】C语言外部变量和内部变量

    千次阅读 2016-02-13 16:51:15
    目录: 【外部变量】 ...定义的变量能被本文件其它文件访问的变量,称为外部变量。 注: * 默认情况下,所有全局变量都是外部变量。 * 不同文件中的同名外部变量都代表同一个变量。 ·
    目录:
    


    【外部变量】
    · 定义
    · 用extern修饰变量


    【内部变量】
    · 定义
    · 用static修饰变量



    1.外部变量

    · 定义
    定义的变量能被本文件和其它文件访问的变量,称为外部变量。
    注:
    * 默认情况下,所有全局变量都是外部变量。
    * 不同文件中的同名外部变量都代表同一个变量。


    · 用extern修饰变量
    声明一个外部变量。



    2.内部变量
    · 定义
    定义的变量只能被本文件访问,不能被其它文件访问,称为内部变量。
    注:不同文件中的同名内部变量,互不影响。


    · 用static修饰变量
    声明一个内部变量。

    展开全文
  • 外部变量和static内部变量的区别等C语言知识讲解。
  • 首先,内部和外部类其实是处于同一个级别,内部类不会因为定义在方法中就会随着方法的执行完毕而跟随者被销毁。问题就来了,如果外部类的方法中的变量不定义final,那么当外部类方法执行完毕的时候,这个局部变量...
    因为生命周期的原因。方法中的局部变量,方法结束后这个变量就要释放掉,final保证这个变量始终指向一个对象。

    首先,内部类和外部类其实是处于同一个级别,内部类不会因为定义在方法中就会随着方法的执行完毕而跟随者被销毁。问题就来了,如果外部类的方法中的变量不定义final,那么当外部类方法执行完毕的时候,这个局部变量肯定也就被GC了,然而内部类的某个方法还没有执行完,这个时候他所引用的外部变量已经找不到了。如果定义为final,java会将这个变量复制一份作为成员变量内置于内部类中,这样的话,由于final所修饰的值始终无法改变,所以这个变量所指向的内存区域就不会变。
    展开全文
  • 外部变量和外部函数

    千次阅读 2011-08-25 20:29:41
    变量可以分为函数内部定义、使用的变量和函数外部定义的变量,通常情况下,把函数内部定义、使用的变量称为内部变量或局部变量,而将在函数外部定义的、供许多函数所使用的变量称为外部变量,一般情况下,也可以称为...
  • 内部和外部类的实例变量可以共存。 在内部类中访问实例变量:this.属性 在内部类访问外部类的实例变量:外部类名.this.属性。 成员内部类的优点: ⑴内部类作为外部类的成员,可以访问外部类的私有成员或...
  • 也称外部变量,在函数体外定义。 全局变量分为外部全局变量和静态全局变量。区别:使用static存储类别的全局变量只能在被定义的源程序文件中使用,而使用extern存储类别的全局变量不仅可以在被定义的源程序文件中...
  • 1,外部全局变量 概念:可以被其他文件访问的全局变量称之为全局变量。默认情况下,所有的全局变量都是外部全局变量。 可以使用 extern显性声明一个外部全局变量 特点: 可以定义同名的多个外部全局变量;多个...
  • 在函数中会存在同一头文件下函数函数函数值得调用,而外部变量的正确引用则是主要问题。 在一个函数中,会存在在同一头文件下,多个源文件的情况,出现多个源文件是为了使函数更加容易阅读,避免同一原文件下,...
  • 外部内部变量 作用域

    2014-06-30 17:02:10
    外部变量和内部变量 一个C程序就是由一个或多个“外部”对象构成的,它们可能是外部变量或函数。在函数外部定义的变量就叫做外部变量,在函数内部定义(也可以认为在块内定义)的变量叫做内部变量。 “外部”...
  • 今天写了个小程序,结果却很是出乎预料,搞了半天原来应该在内部类的成员变量写在了外面,这样的后果就导致了:每new一个内部类的对象时,所有new出来的对象都共用外部一个成员变量,结果就导致了意外的效果,呵呵,...
  • 标识符包含常量名,变量名,函数名,类名,对象名,语句标号,类型定义名,宏名等。所谓可见是指可以对所定义的标识符进行访问存取等操作。 作用域种类 按作用域的大小可以分为以下5种: 程序级>文件级>类级&...
  • 嵌套的内部类ABarBBar可以访问主类的变量吗?例如:public class Foo {public ABar abar = new ABar();public BBar bbar = new BBar();public int someCounter = 0;public class ABar {public int i = 0;public ...
  • 因为内部和外部类的局部变量生命周期不一样,外部类方法执行完该局部变量可能会被释放掉,但该方法中的内部类可能还在执行(如线程),还要使用该变量,所以外部类变量设置为final的,变成常量,使用的时候内部类...
  • 嵌套的内部类ABarBBar可以访问主类的变量吗?例如:public class Foo {public ABar abar = new ABar();public BBar bbar = new BBar();public int someCounter = 0;public class ABar {public int i = 0;public ...
  • C语言程序设计教案 章节名称 变量的类型2内部函数和外部函数章节复习 授课类型 理论 实验 ?理实一体 实训 实习 班级 地点 周次 星期 节次 授课进度 ?符合 超前 滞后 ?符合 超前 滞后 ?符合 超前 滞后 教学目标 知识...
  • //如果出现了重名现象,那么格式是:外部类名称.this.外部类成员变量名 public class outer { int num1 = 90;//外部类的成员变量 public class inner{ ...//内部类的成员变量 public void methob...
  • ————————————————————————————————————————————————... 在外部成员内部类中,都可以定义变量。成员内部类可以随意访问外部类中的变量,而外部类不能够直接访...
  • 在较大的项目里面,在a.c文件声明了全局变量double x,在b.c...由于犯二,把extern double x写成了extern int x,程序内部无法确定全局变量x的类型时double还是int,发生了一系列想砸键盘的事情,坐一下笔录!切记!...
  • 内部函数和外部函数 【3】变量的声明与定义  对于函数。声明部分是对有关标识符(变量、函数、结构体)的属性进行声明;函数的声明是函数的原型,而函数的定义是对函数功能的定义。对被调函数的声明...
  • 事实上, 匿名内部类使用外部变量时, 因为匿名内部和外部变量的生命周期不同, 此时匿名内部类中的该变量其实是原来变量的副本 方法内的外部变量作用域: 当前方法 匿名内部类引用外部变量作用域: 匿名内部类的方法 ...
  • @import url(/css/cuteeditor.css); ...定义:在代码块内部定义的变量 作用域:从定义变量的那一行开始,一直到代码块结束 生命周期:从定义变量的那一行开始分配存储空间,代码块结束后,就...
  • 2.static 静态存贮分配变量(又分为内部静态和外部静态) 3.extern 全程变量(用于外部变量说明) 4.register 寄存器变量(分配在硬件寄存器中) 四大类,所有变量必须先说明(定义),后使用。 ...
  • 1.实质上,java将局部变量作为参数...2.为了保证内部和外部类引用的是相同的变量,所以,所引用的外部类的变量必须final。普通变量变成一个常量,对象变成了唯一的引用。因此,保证了外部类和内部类引用的唯一性。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,909
精华内容 3,963
关键字:

内部变量和外部变量