static局部变量的默认初始化规矩

    添加时间:2013-6-1 点击量:
      《Windows法度设计》第88页有一个API函数调用(别的,对这页的法度——“参加迁移转变条的SYSMETS”,这个链接给出了很好的注释和运行截图,值得一看:http://blog.csdn.net/sergery/article/details/8029796   ):



    SetScrollPos   (hwnd, SB_VERT, iVscrollPos, TRUE) ;


    此中,iVscrollPos是窗口过程WndProc中定义的一个static变量,没有给初始值,应用的是默认初始化规矩,于是就将相干规矩找出来复习一下,择要如下:


      1.static 局部对象确保不迟于在法度履行流程第一次经过该对象的定义语句时进行初始化。这种对象一旦被创建,在法度停止前都不会撤销(下面的第2条对这句话给出了更好的申明)。    ——《C++ Primer》345页


      2.为静态局部变量赋初值是在编译时进行的,即只赋初值一次,在法度运行时它已有初值。今后每次调用函数时不再从头赋初值而只是保存前次函数调用停止时的值。而为主动变量赋初值,不是在编译时进行的,而是在函数调用时进行,每调用函数从头给一次值,相对于履行一次赋值语句。


      3.若是在定义局部变量是不不赋初值的话,对静态局部变量来说,编译时主动赋初值0(对数值型变量)或空字符(对字符型变量)。而对主动变量来说,若是不赋初值,则它的值是不断定的值。这是因为每次函数调用停止后存储单位已被开释,下次调用时又从头分派存储单位,而所分派的单位中的值是不断定的。  ——《C++法度设计》(谭浩强第四版)141页,该页还有其它相干规矩。


    我俩之间有着强烈的吸引力。短短几个小时后,我俩已经明白:我们的心是一个整体的两半,我俩的心灵是孪生兄妹,是知己。她让我感到更有活力,更完美,更幸福。即使她不在我身边,我依然还是感到幸福,因为她总是以这样或者那样的方式出现在我心头。——恩里克·巴里奥斯《爱的文明》
    分享到: