精华内容
下载资源
问答
  • C语言的全局变量与局部变量

    C语言的全局变量与局部变量:

    例如:

    #include<stdio.h>
    
    int hour = 23, minute = 59;
    double pi = 3.14 + 0.0016;
    
    void print_time(void)
    {
            printf("%d:%d in print_time\n", hour, minute);
    }
    
    int main(void)
    {
            int hour = 21, minute = 50;
            print_time();
            printf("%d:%d in print_time\n", hour, minute);
            return 0;
    }

    结果:

    gcc function_global.c -lm -o function_global.out
    ./function_global.out
    
    23:59 in print_time
    21:50 in print_time


    则第一次调用 print_time 打印的是全局变量的值,第二次直接调用 printf 打印的则是 main 函数局部变量的值。在C语言中每个标识符都有特定的作用域,全局变量是定义在所有函数体之外的标识符,它的作用域从定义的位置开始直到源文件结束,而 main 函数局部变量的作用域仅限于 main 函数之中。

    展开全文
  • C语言的全局变量为什么不能在函数外声明 要明白这个问题的原因,我们来看下面一段简单的代码: #include<stdio.h> #include<string.h> int a; a= 9; int main(){ printf("%d",a); return 0; } 从...

    C语言的全局变量为什么不能在函数外声明

         要明白这个问题的原因,我们来看下面一段简单的代码:
    
    #include<stdio.h>
    #include<string.h>
    int a;
    a= 9; 
    int main(){
     printf("%d",a);
     return 0;
    }

    从上面的代码我们看到我把a设置为了全局变量,并且在函数外声明了。结果就会出现这个警告(其实在别的编译器里这就是个错误提示):

    在这里插入图片描述

    其实之所以会出现这个错误,还是因为我们搞混了一个概念:虽然程序在函数内,比如说main函数内是顺序执行的,但在函数外的程序外的程序代码不是顺序执行的,而是根据main函数内代码的顺序,需要哪个函数就去调用哪个函数,需要哪个变量就去调用哪个变量,就比如在这段代码中:你以为你同时声明了int a;
    并对其初始化:a = 9; 但是在main函数中用到 “a” 这个变量时( printf("%d", a) ) .编译器只看到了 int a ; 因为函数外的代码不是顺序执行的。
    所以想要改这个错误,有两种方法:

    1. 第一种就是:在声明变量的同时对其进行初始化。即让两段代码合成一句
    #include<stdio.h>
    #include<string.h>
    
    int a = 9;
     
    int main(){
     printf("%d",a);
     return 0;
    }
    1. 第二种是:将函数外的已经声明的变量在函数内赋值初始化:
    #include<stdio.h>
    #include<string.h>
    
    int a;
     
    int main(){
     a = 9;
     printf("%d",a);
     return 0;
    }

    而现在就不会出现错误或者是警告了。其实这不仅仅是整型变量是如此,比如指针变量,结构体指针变量都必须声明的同时就初始化,或者是在函数内初始化赋值,不然编译器会报错。

    展开全文
  • 全局变量的作用域是整个程序,局部变量作用域是定义变量函数内部,离开函数局部变量失效。 2.一个局部函数不能使用另一个局部函数中定义变量。 http://c.biancheng.net/cpp/html/62.html ...

    1.变量的作用域由变量的定义位置决定,在不同位置定义的变量,它的作用域是不一样的。全局变量的作用域是整个程序,局部变量的作用域是定义变量的函数内部,离开函数局部变量失效。

    2.一个局部函数不能使用另一个局部函数中定义的变量。

    http://c.biancheng.net/cpp/html/62.html

    展开全文
  • C语言的全局变量和局部变量

    千次阅读 2010-11-13 22:26:00
    全局变量:函数外(含main函数)定义的变量是整个程序的全局变量,程序中的任何函数都可以使用这些变量。个人认为,全局变量影响函数的封装和移植,影响代码的可读性,不必过多定义。 局部变量:函数体内...

    全局变量和局部变量是一个相对的概念,函数体之内定义的变量对于整个程序就是局部变量,对于该函数它就是该函数的“全局变量”。其实,我们不必关心它是全局变量,还是局部变量,只要我们明白它的作用域是什么就可以了。

    全局变量:函数外(含main函数)定义的变量是整个程序的全局变量,程序中的任何函数都可以使用这些变量。个人认为,全局变量影响函数的封装和移植,影响代码的可读性,不必过多定义。

    局部变量:函数体内定义的变量,程序调用函数时,创建变量,函数结束后,销毁变量。本函数定义的局部变量不被其他函数操作。gcc允许这样的变量存在:在不同的条件里定义相同名字的变量。如if(a){int b=1;}else{int b=2;},相对于判断条件,a相当于“全局变量”,b相当于局部变量。

    extern:extern表示“外来的”,说明某变量是在本文件之外定义的全局变量,本文件要想使用该全局变量,需要extern,但要注意,这里说的全局变量是整个程序的全局变量。

    static:static定义的变量可以认为是全局变量,也可以认为是局部变量。函数体外定义的static变量,是本文件中的全局变量,本文件中所有的函数都可以使用该变量,对于整个程序,它则是局部变量,因为其他文件不能使用这些static变量,使用extern也不行。多人开发时,如果非常想用全局变量,但又不想与他人的变量(或函数)冲突,那就在你的文件中定义static变量(或函数)吧。函数体内定义的static变量,只有该函数可以使用,其他函数不能,它与普通变量的区别在于,函数每次调用结束后,static变量不会被销毁,其值仍在。

    展开全文
  •  普通局部变量定义时候直接定义或者在前面加上auto void func1(void) {  int i = 1;    i++;    printf("i = %d.\n", i); } 局部变量i解析: 在连续三次调用func1中,每次调用时,在进入函数...
  • 在x86汇编中使用C语言的全局变量

    千次阅读 2017-10-21 17:01:19
    在阅读于渊《一个操作系统实现》时,遇到如下一个问题: 在代码chapter6/r/kernel/kernel.asm中,有这样一段汇编代码: 357 restart: 358 mov esp, [p_proc_ready] 359 lldt [esp + P_LDT_SEL] 360 lea eax, ...
  • 所以需要先看懂别人代码,工程里面声明了很多全局变量,懂C语言代码都知道,全局变量将多个函数模块串联起来,如果不显式标注(参考匈牙利命名法,变量名首字符为“g”),看起来会很吃力。然而Keil在高亮显示和...
  • C语言的全局变量放在哪里

    千次阅读 2010-04-06 21:54:00
    BSS(二进制文件术语) 是“Block Started by ...BSS段的变量只有名称和大小却没有值。此名后来被许多文件格式使用,包括PE。“以符号开始块”指是编译器处理未初始化数据地方。BSS节不包含任何数据,只是简单
  • C语言——全局变量的定义与声明

    万次阅读 多人点赞 2019-09-28 12:31:34
    C语言全局变量的定义与声明困扰着许多C语言初学者。本文讲述了全局变量定义与声明用法,而且本为也将阐述这种用法内在原理。我们先从两个错误例子引入,以下两个例程都在vc6.0平台上测试。 两种错误例程 1....
  • C语言全局变量与局部变量区别是什么呢?我们怎么定义全局变量与局部变量呢。
  • 局部变量一:全局变量全局变量保存在内存的全局存储区中,占用静态的存储单元二:局部变量局部变量保存在栈中,只有在所在函数被调用时才动态地为变量分配存储单元三:C语言经过编译之后将内存分为以下几个区域(1).....
  • 学习了C语言全局变量,变量,常量使用方式之后。自主进行了测试,并将一些注意点记录下来,巩固记忆并方面查阅代码:#include #include /*这个程序用来测试全局变量,常量定义与使用*///定义常量PI=3.14#...
  • c语言中详细解说局部变量和全局变量的关系和作用,让你明白!
  • 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域...
  • C语言定义全局变量

    千次阅读 2016-04-18 09:49:51
    C语言定义全局变量时,在有多个.c/.h文件情况下发生了error LNK2005: "int abc"已经在 xxx.obj 中定义错误 原因是定义时在头文件中定义了int abc,没有定义extern int abc。 后来定义了.h 中定义了extern int ...
  • 静态局部变量具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在,它和全局变量的区别在于全局变量对所有函数都是可见,而静态局部变量只对定义自己函数体始终可见。...
  • 从空间角度来看,变量可以分为全局变量和局部变量,而从时间角度来分 可以有静态存储变量和动态存储变量之分。一。全局变量和局部变量1。局部变量他是指在函数内部定义变量 作用域为定义局部变量函数 也就是说...
  • c语言全局变量和静态变量Prerequisite: Storage classes in C 先决条件: C语言存储类 Automatic (auto) and static both are the keywords which are used under the storage classes, and they define the...
  • 1.C++变量根据定义位置不同生命周期,具有不同作用域,作用域可分为6种: ...当然,其他不包含全局变量定义源文件需要用extern 关键字再次声明这个全局变量。 2>局部变量也只有局部作用域,它是自动对象(a
  • C语言全局变量在多个c文件中共用方法
  • c语言全局变量的初始化

    万次阅读 2017-04-18 21:31:11
    c语言中局部变量可以用类型相符任意表达式来初始化,而全局变量只能用常量表达式初始化,尤其对于全局变量来说,不能用一个数学函数或者其他需要在运行时才能计算出结果表达式进行初始化。 因为程序开始运行...
  • 1.C++变量根据定义位置不同生命周期,具有不同作用域,作用域可分为6种: ...当然,其他不包含全局变量定义源文件需要用extern 关键字再次声明这个全局变量。 2>静态局部变量具有局部作用域
  • 1.C++变量根据定义位置不同生命周期,具有不同作用域,作用域可分为6种: 全局作用域,局部作用域,语句作用域...当然,其他不包含全局变量定义源文件需要用extern 关键字再次声明这个全局变量。 2
  • C语言全局变量和局部变量区别

    万次阅读 2018-11-27 09:19:10
    1.局部变量也称为内部变量。...静态全局变量是定义存储类型为静态型外部变量,其作用域是从定义点到程序结束,所不同是存储类型决定了存储地点,静态型变量是存放在内存数据区中 ,它们在程...
  • 猛然间从前不是问题的问题成为了最主要的问题:c语言的全局变量。可能大家对这个不是太了解,因为无论是老师说的还是课本上印的都是尽量少使用全局变量。之前从考试的角度说对这句话有印象,不过当用的时候早就抛...
  • C语言全局变量

    2020-01-04 23:33:31
    文章目录1、多个文件中使用全局变量2、本文件中使用的全局变量3、所有文件中都可访问的全局函数4、本文件中使用的全局函数 1、多个文件中使用全局变量 例: a.c中定义全局变量 int a=100 b.c中使用a.c中定义的全局...
  • C语言全局变量赋值陷阱

    万次阅读 2017-10-26 20:26:51
    c语言中不允许在函数外部给全局变量赋值

空空如也

空空如也

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

c语言的全局变量

c语言 订阅