精华内容
下载资源
问答
  • 首先我们都知道静态变量是随着类的加载而加载的,所以当类...再者就是全局变量也就是成员变量,全局变量(成员变量)是在创建对象的时候初始化的,所以只要创建对象就会初始化全局变量(成员变量),并存放在堆内存中。

    首先我们都知道静态变量是随着类的加载而加载的,所以当类加载进内存的时候,静态变量就已经伴随着类的加载而初始化进内存了,并且静态变量只在类加载时加载一次,存放在方法区中的静态区中。

    再者就是全局变量也就是成员变量,全局变量(成员变量)是在创建对象的时候初始化的,所以只要创建对象就会初始化全局变量(成员变量),并存放在堆内存中。

    展开全文
  • 全局变量和静态(全局和局部)变量 什么时候初始化? 本文链接:https://blog.csdn.net/sunny04/article/details/18605273 1. 静态变量的初始化是在编译时进行,变量的赋值是在函数或程序运行时进行。 2. 静态变量只...

    全局变量和静态(全局和局部)变量 什么时候初始化?

    本文链接:https://blog.csdn.net/sunny04/article/details/18605273

    1. 静态变量的初始化是在编译时进行,变量的赋值是在函数或程序运行时进行。
    2. 静态变量只初始化一次,但可以通过赋值的方式多次修改静态变量的值。
    3. 全局变量和静态变量 在进入 main 前被初始化

    展开全文
  •  根据 C++ 标准,全局变量初始化要在 main 函数执行前完成,常识无疑,但是这个说法有点含糊,main 函数执行前到底具体是什么时候呢?是编译时还是运行时?答案是既有编译时,也可能会有运行时(seriously), 从...
  • C++中,全局变量只能声明、初始化,而不能赋值 也就是说,下面这样是不被允许的: #include using namespace std; int a; a = 2; int main() { return 0; } 错误提示是: C++ requires a type specifier for all...
  • 全局变量,static变量初始化时间

    万次阅读 2019-04-24 22:04:41
    首先,静态局部变量和全局变量一样,数据都存放在全局区域,所以在主程序之前,编译器已经为其分配好了内存,但在C和C++中静态局部变量的初始化节点又有点不太一样。在C中,初始化发生在代码执行之前,编译阶段分配...

    原文 https://www.cnblogs.com/novice-dxx/p/7094690.html

    本次上传主要是关于静态局部变量的初始化问题。

    首先,静态局部变量和全局变量一样,数据都存放在全局区域,所以在主程序之前,编译器已经为其分配好了内存,但在C和C++中静态局部变量的初始化节点又有点不太一样在C中,初始化发生在代码执行之前,编译阶段分配好内存之后,就会进行初始化,所以我们看到在C语言中无法使用变量对静态局部变量进行初始化,在程序运行结束,变量所处的全局内存会被全部回收。而在C++中,初始化时在执行相关代码时才会进行初始化,主要是由于C++引入对象后,要进行初始化必须执行相应构造函数和析构函数,在构造函数或析构函数中经常会需要进行某些程序中需要进行的特定操作,并非简单地分配内存。所以C++标准定为全局或静态对象是有首次用到时才会进行构造,并通过atexit()来管理。在程序结束,按照构造顺序反方向进行逐个析构。所以在C++中是可以使用变量对静态局部变量进行初始化的
    全局变量、文件域的静态变量和类的静态成员变量在main执行之前的静态初始化过程中分配内存并初始化;局部静态变量(一般为函数内的静态变量)在第一次使用时分配内存并初始化。这里的变量包含内置数据类型和自定义类型的对象。
    根据 C++ 标准,全局变量的初始化要在 main 函数执行前完成,常识无疑,但是这个说法有点含糊,main 函数执行前到底具体是什么时候呢?是编译时还是运行时?答案是既有编译时,也可能会有运行时(seriously), 从语言的层面来说,全局变量的初始化可以划分为以下两个阶段(c++11 N3690 3.6.2):

    static initialization: 静态初始化指的是用常量来对变量进行初始化,主要包括 zero initialization 和 const initialization,静态初始化在程序加载的过程中完成,对简单类型(内建类型,POD等)来说,从具体实现上看,zero initialization 的变量会被保存在 bss 段,const initialization 的变量则放在 data 段内,程序加载即可完成初始化,这和 c 语言里的全局变量初始化基本是一致的。

    dynamic initialization:动态初始化主要是指需要经过函数调用才能完成的初始化,比如说:int a = foo(),或者是复杂类型(类)的初始化(需要调用构造函数)等。这些变量的初始化会在 main 函数执行前由运行时调用相应的代码从而得以进行(函数内的 static 变量除外)。

    在这里插入图片描述

    后面再来谈谈另一个问题,假如我们在一个循环中,定义了一个静态局部变量并进行初始化,循环过程中**,编译器怎么知道当前的静态局部变量已经初始化过了呢?**

    这个问题C和C++的处理方式也是不一样的。C中编译器会直接跳过这一个语句,因为在编译的时候已经对静态局部变量进行过分配空间并初始化,所以代码执行过程中根本不需要再次执行而在C++中,编译器会在编译器分配内存后,在全局区域(当前静态局部变量的地址)附近同样分配一块空间,进行记录变量是否已经进行过初始化。之所以说附近是根据编译器不同,处理方式不同导致的。在网上有博客介绍某种编译器(该吧主并没有透露编译器名字),会在当前变量后面的一个字节进行改变,具体上代码:

    展开全文
  • 重点说明了VC++全局变量动态初始化的顺序
  • 全局变量有时也需要初始化,而局部变量其实大部分时间都没有初始化。不要把赋初值与初始化混淆了:初始化是由编译器做的,形成可执行文件后,那些变量的值就在软件文件中放着,执行程序时直接使用了;而赋初值是由C/...

    满意答案

    02ae427d08e371d7e90d5b995e828d6d.png

    ccc000267

    推荐于 2017.11.23

    02ae427d08e371d7e90d5b995e828d6d.png

    采纳率:52%    等级:8

    已帮助:712人

    这个说法本身就不对。变量需要不需要初始化是根据需要来进行的。全局变量有时也需要初始化,而局部变量其实大部分时间都没有初始化。不要把赋初值与初始化混淆了:初始化是由编译器做的,形成可执行文件后,那些变量的值就在软件文件中放着,执行程序时直接使用了;而赋初值是由C/C++代码实现的,程序开始执行后才给变量赋的值。只是全局变量如果不显式初始化,那么编译时由编译器自动初始化为0,而编译器对局部变量是否有值视而不见,所以在程序开始执行前局部变量的“值”是机器垃圾。因此,局部变量在获得初值前若当右值使用就要出问题!局部变量获得初值有两个途径:一是初始化,如int x=3;就是在声明x的类型时同时初始化为3——x==3这个值在编译时就被编译器确定了,程序启动后不再执行int x=3;这种操作;二是赋初值,如int x;x=3;,int x;在编译时执行,只声明了变量类型,值是垃圾,x=3;是C/C++语句,每次启动程序都要执行,将变量x赋值为3。所以,说“局部变量其实大部分时间都没有初始化”,就是指我们创建函数时往往只写int a,b,c,x,y,z;而并不给每个变量都初始化一个确定的值,而是在使用前给它们赋初值,如紧接着写scanf("%d%d%d",&a,&b,&c);或for(x=0;x<10;x++){...}(其中x=0是给x赋初值)等。

    40分享举报

    展开全文
  • 什么全局变量一定要初始化

    千次阅读 2019-10-03 12:41:00
    在说明为什么初始化之前,先提及下 C 语言的初始化规则,以备后用。可能大家在对数组进行初始化时用的是这样的方法: char buf[10] = {0}; 那么char buf[10] = {1};是不是将每个数组中的每个元素都初始化为 ...
  • wordpress操作数据库用一个全局变量$wpdb来进行各种操作,使用的时候先在函数声明global $wpdb,然后调用它的数据库操作方法。那么它是在哪里进行初始化并声明为全局变量的呢
  • 1. 静态变量的初始化是在编译时进行,变量的赋值是在函数或程序运行时进行。 2. 静态变量只初始化一次,但可以通过赋值的方式多次修改静态变量的值。...3. 全局变量和静态变量 在进入 main 前被初始化
  • c语言中全局变量初始化

    万次阅读 2017-04-18 21:31:11
    c语言中局部变量可以用类型相符的任意表达式来初始化,而全局变量只能用常量表达式初始化,尤其对于全局变量来说,不能用一个数学函数或者其他的需要在运行时才能计算出结果的表达式进行初始化。 因为程序开始运行...
  • 一、类的成员变量初始化 ---在JVM类加载阶段完成 类的成员变量又分为静态成员变量和非静态成员变量。 静态成员变量 静态成员变量会被初始化两次,第一次在“准备”阶段,先进行一次初始化,系统附上默认值;第二...
  • 基本数据类型数值6类 (long/int/short/byte)(double/float) 非数值2类(char,boolean)下面是默认值:0/0/0/0/0.0/0.0/ /false首先 Java 语言就是这么规定的。然后为什么 Java 语言要这么规定...而成员变量就是类的数...
  • 全局变量在整个源文件的作用域都是有效的,只需要在一个源文件中定义全局变量,在其他不包含全局变量定义的源文件中用extern关键字再次声明这个全局变量即可。 也可以在一个源文件中定义这个全局变量,在头文件中用...
  • 全局变量和局部变量初始化问题

    千次阅读 2019-08-23 16:08:42
    这里需要分清一个事实,是变量系统都会默认给初始化,只不过全局变量默认初始化为0,而局部变量被初始化为随机数,这个随机数用不了,后面会验证。现在,我们要讨论的是程序猿或者程序媛需不需要给全局变量和局部...
  • golang 变量定义和初始化

    千次阅读 2019-07-31 21:01:32
    变量声明和初始化方式 使用var关键字 var a int = 9 var str string ="jisuanji" 注意,Go语言变量类型放在变量名之后! 如果上面的代码段没有初始化值,那么变量就会被初始化为对应类型的零值。 var a ...
  • 最近一个项目需要保存一下临时数据,而产品容易受干扰而...所以需要保存一下数据,那么只有在系统复位时候不再初始化变量即可。对应MDK(keil)来说是一个比较麻烦的问题。通过网络上找了大量资料和测试发现终于可以了。
  • 前几天,有个大佬考了我一个问题:为什么类的成员变量不需要指定值就可以自动赋予初始值,而方法内的局部变量就必须指定初始值呢?说实话,这个问题确实难倒我了,之后我在网上一顿操作,终于把这个问题弄得稍微明白...
  •  前日,在一次C++课程上,刘老师在举例说明构造函数和析构函数的功能时,提到了全局变量初始化时的构造函数的行为。构造函数在main函数之前初始化全局变量。当然在C++下我是深信不疑的。但随后老师声称C语言下的...
  • 1.全局变量 全局变量无疑要在main函数开始前执行完成,但可细分为在编译时和在运行时初始化,即static initialization和dynamic initialization。 static initialization 静态初始化按照我的理解,是针对那些较为...
  • Java全局变量和局部变量初始化问题

    千次阅读 2020-02-21 23:24:53
    我们先来看一个比较的例子,最近在知乎看到的帖子。... //类的成员变量 public static void main(String[] args) { TestDemo td =new TestDemo(); //默认的构造方法 System.out.println(td.a); ...
  • 当局部变量被定义时,系统不会对其初始化,此时局部变量的初始值未定义,必须自行对其初始化。定义全局变量时,系统会自动初始化为下列值:
  • C语言中头文件定义变量 在c语言的头文件中,经常使用 `#ifndef a_h #define a_h #endif /* a_h */或者是#program once` 这种形式来保证一个头文件不会被重复引用,注意,这里指的是不会被一个C源文件引用,因为: ...
  • int a; main() { ...我们所理解的静态变量b,只知道它在上面的函数内部只初始化一次,其实是个假像 ,我要表达的是,事实上b初始化的值,不是在循环体完成的.继续下看. while(1) {  st
  • Java中全局变量初始化顺序

    千次阅读 2019-02-27 19:20:58
    首先,在加载类或者创建类的第一个对象的时候初始化静态变量。但是无论创建多少个对象,静态变量初始化一次。 然后,初始化非静态变量。如果非静态变量在声明的位置没有初始化,则编译器为基本类型数据赋值0,...
  • C规定,未初始化变量的初值为0,这个清0的操作是由启动代码完成的,还有已初始化变量的初值的设置,也是由启动代码完成的。 为了启动代码的简单化,编译链接器会把已初始化变量放在同一个段:.data,这个段的映像...
  • C/C++ 全局变量初始化

    千次阅读 2020-02-16 17:02:44
    C++ 标准,全局变量初始化要在 main 函数执行前完成,常识无疑,但是这个说法有点含糊,main 函数执行前到底具体是什么时候呢?是编译时还是运行时?答案是既有编译时,也可能会有运行时(seriously), 从语言的层面...
  • C/C++ --- 全局变量初始化总结

    千次阅读 2016-09-01 17:29:56
    什么时候初始化根据 C++ 标准,全局变量初始化要在 main 函数执行前完成,常识无疑,但是这个说法有点含糊,main 函数执行前到底具体是什么时候呢?是编译时还是运行时?答案是既有编译时,也可能会有运行时...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 502,179
精华内容 200,871
关键字:

全局变量什么时候初始化