精华内容
下载资源
问答
  • 全局变量和外部变量

    2020-06-20 21:03:58
    全局变量的作用范围:                从变量定义位置开始到所在文件结束位置. 在C语言中,在function 中定义的变量的作用于仅限于本function,在子函数运行...

    全局变量的作用范围:
                   从变量定义位置开始到所在文件结束位置.

    在C语言中,在function 中定义的变量的作用于仅限于本function,在子函数运行结束后释放内存,若要使用另外一个文件的子函数的中间变量,需在使用这个变量的地方将其申明为外部变量:
                   extern type var;
                
         如果需要使某个文件某个函数的中间变量参与不同文件函数中的运算,则需要在main函数前将其定义为全局变量:
                  type var;*
         在其他文件的函数需要使用这一变量时将其申明为外部变量
    ————————————————
    版权声明:本文为CSDN博主「MOONLIGHT003」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/MOONLIGHT003/article/details/106877422

    展开全文
  • 在较大的项目里面,在a.c文件声明了全局变量double x,在b.c文件里使用该全局变量,故需要声明extern double x,才能在b.c文件范围内使用。 由于犯二,把extern double x写成了extern int x,程序内部无法确定全局...

    在较大的项目里面,在a.c文件声明了全局变量double x,在b.c文件里使用该全局变量,故需要声明extern double x,才能在b.c文件范围内使用。

    由于犯二,把extern double x写成了extern int x,程序内部无法确定全局变量x的类型时double还是int,发生了一系列想砸键盘的事情,坐一下笔录!切记!

    展开全文
  • 还有外部变量是分配在静态存储区,全局变量是存放在哪里?
  • #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全局变量 定义在函数外,不属于任何函数,生存周期为定义开始直到程序运行结束,作用范围为所有函数。 2局部变量 一般定义在函数或复合语句的开头,生存周期为定义直到所在函数或复合语句调用结束,作用范围为所在...

    1.全局变量

    定义在函数外,不属于任何函数,生存周期为定义开始直到程序运行结束,作用范围为所有函数。

    定义格式:变量类型  变量表(定义在函数外)

    2.全局静态变量

    与全局变量类似,但其作用范围被限制在当前的程序文件模块中。即使其他文件模块使用外部变量声明,也不能使用该变量。

    定义格式:static 变量类型 变量表;(定义在函数外)

    3.局部变量

    一般定义在函数或复合语句的开头,生存周期为定义直到所在函数或复合语句调用结束,作用范围为所在函数或复合语句。

    定义格式: 变量类型 变量表;(定义在函数或复合语句内)

    4.局部静态变量

    与局部变量类似,只不过其生存周期为定义开始直到程序运行结束。其赋初值只会在函数第一次调用时起作用,若没有赋值,自动赋值为0。

    定义格式:static 变量类型 变量表;(定义在函数或复合语句内)

    5.外部变量

    使已经定义的全局变量的作用范围扩展到其他程序文件模块。

    定义格式:static 变量表;(定义在函数外)

    6.外部函数

    在一个模块中调用另一个模块中的函数时,需要进行函数的外部调用声明。

    格式:extern 函数类型 函数名(参数表);

    7.静态函数

    限制当前模块中定义的函数,使其不能被外部模块调用。

    格式:static 函数类型 函数名(参数表);


    展开全文
  • 局部变量和全局变量是从作用域...为什么很多地方就默认为内部变量和外部变量就是局部变量和全局变量 这样子的话那么这句话怎么理解呢?![图片说明](https://img-ask.csdn.net/upload/201603/07/1457318749_145328.png)
  • 1,外部全局变量 概念:可以被其他文件访问的全局变量称之为全局变量。默认情况下,所有的全局变量都是外部全局变量。 可以使用 extern显性声明一个外部全局变量 特点: 可以定义同名的多个外部全局变量;多个...
  • 静态全局变量和全局变量的区别: 全局变量(外部变量)的说明之前再冠以static就构成了静态的全局变量。 全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。 这两者...
  • 作用域 全局变量 局部变量 静态变量 外部变量 常量 volatile变量 作用域: 作用域规则告诉我们一个变量的有效范围,它在哪儿创建,在哪儿销毁(也就是说超出了作用域)。变量的有效作用域从它的定义点开始,到定义...
  • 全局变量 全局变量默认初始化为0,字符型变量为空字符’’ 定义在函数外,可被本文件及其他文件的函数使用...同一文件中全局变量和局部变量可以同名,在局部变量作用域内,全局变量不起作用 静态全局变量 静态...
  •  外部全局变量(extern)  1)用extern拓展一个文件内的全局变量的作用范围  2)使用extern声明能够在一个文件中调用其他文件中定义的变量    弊端:执行一个文件中的函数,可能会改变全局变量的值,从而影响...
  • 什么是全局变量和局部变量?有很多朋友经常问我一些关于全局变量和局部变量的问题,今天抽点时间给大家简要阐述下关于全局变量和局部变量的一些问题。1、全局变量:顾名思义,就是对于整个程序都可以使用的变量,...
  • 详细内容python全局变量和局部变量的区别全局变量和局部变量的区别在于作用域,全局变量在整个py文件中声明,全局范围内可以使用;局部变量是在某个函数内部声明的,只能在函数内部使用,如果超出使用范围(函数外部)...
  • 共同点:全局变量(外部变量)的说明之前再冠以static 就构 成了静态的全局变量全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。 不同点:这两者的区别...
  • 全局变量分为外部全局变量和静态全局变量。区别:使用static存储类别的全局变量只能在被定义的源程序文件中使用,而使用extern存储类别的全局变量不仅可以在被定义的源程序文件中使用,还可以被其他源文件中的函数...
  • static 全局变量和普通全局变量 static全局变量与普通的全局变量有什么区别? static局部变量和普通局部变量有什么区别? static函数与普通函数有什么区别?  答:全局变量(外部变量)的说明之前再冠以static 就构成...
  • 局部变量是在函数内部定义的变量,只能在函数内部使用全局变量是在函数外部定义的变量(没有定义在某一个函数内),所有函数内部都可以使用这个变量。注意:在其它的开发语言中,大都不推荐使用全局变量因为其可变范围...
  • 全局变量(外部变量)的说明之前再冠以static就构成了静态的全局变量全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是...
  • 全局变量和局部变量

    2021-01-26 20:51:02
    全局变量和局部变量全局变量和局部变量产生的原因全局变量局部变量 全局变量和局部变量产生的原因 全局变量和局部变量他们的关键点在于声明时所处的位置,因为声明时所处的位置不同决定了该变量将来成为全局变量...
  • 贺老师教学链接 C语言及程序设计进阶 本课讲解常见的全局变量使用形式#include int a=15,b=-7; //定义全局变量a,b int max(int,int); int main( ) { printf("%d\n", max(a,b)); return 0; } int max(int x,int ...
  • 全局变量是不显式用static修饰的全局变量,但全局变量默认是***动态的***,作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,...全局变量也称为外部变量,它是在 函数外部定义的变量。 它不属于哪一...
  • 作用域 全局变量 局部变量 静态变量 外部变量 常量 volatile变量  作用域: 作用域规则告诉我们一个变量的有效范围,它在哪儿创建,在哪儿销毁(也就是说超出了作用域)。变量的有效作用域从它的...
  • Python中在定义及使用函数时会遇到“局部变量”全局变量”。在函数内部定义的变量是“局部变量”;在函数外部定义的变量是“全局变量”。准确地说,作用域是全局范围的变量是“全局变量”;作用域是局部范围的...
  • 局部变量是在函数内部定义的变量,只能在函数内部使用全局变量是在函数外部定义的变量(没有定义在某一个函数内),所有函数内部都可以使用这个变量。注意:在其它的开发语言中,大都不推荐使用全局变量因为其可变范围...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,769
精华内容 1,907
关键字:

全局变量和外部变量